Как приведённые скрипты конфликтуют между собой?

Код выбора нужных option и кнопка для фильтрации:
<p class="rus">Уровень подготовки</p>
<?php
$categories = get_terms('level', 'orderby=name&hide_empty=0');
if($categories){
	echo '<select class="select" id="level1"><option value="card-item">Любой</option>';
	foreach ($categories as $cat){
		echo "<option value='level-{$cat->term_id}'>{$cat->name}</option>";
	}
	echo '</select>';
}
?>

<button class="btn_access func-during" onclick="applyFilters()">Подобрать</button>

Сам скрипт фильтрации:
// Фильтрация программ
function applyFilters() {
	// Инициализация классов
	var direction1 = $("#direction1").val();
	var level1 = $("#level1").val();
	var universities = $("#universities").val();
	var language = $("#language").val();
	var program = $("#program").val();
	// Создания селектора
	var selector = "#card-wrapper-first ." + direction1 + "." + level1 + "." + program + "." + language + "." + universities;

	// Появление нового запроса
	$('#card-wrapper-first .card-item').hide();
	$(selector).show();
}

И вот такой код, который запоминает выбранное значение select:
$(function () {
  var abracadabra = window.localStorage.getItem("abracadabra") || "opt1";
  $(".jqueryOptions").hide();
  $("." + abracadabra).show();
  $("#level1")
    .change(function () {
      window.localStorage.setItem("abracadabra", this.value);
      $(".jqueryOptions").slideUp();
      $(".jqueryOptions").removeClass("current-opt");
      $("." + $(this).val()).slideDown();
      $("." + $(this).val()).addClass("current-opt");
    })
    .val(abracadabra);
});


Сейчас у меня при выборе любого option почему-то активируется ещё и скрипт фильтрации. Т.е. к отфильтрованным блокам добавляются ещё те, которые ты выбрал из option. А по идеи ты просто должен выбрать необходимые option и только после нажатия на кнопку "Подобрать" фильтрация должна срабатывать. У меня почему-то он стал срабатывать без нажатия на кнопку, а просто при выборе option
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ответы на вопрос 1
Raxen
@Raxen
TechLead Frontend Developer, Beeline
Вы вызываете функцию, а нужно присваивать вызов функции к слушателю событий
<button class="btn_access func-during" onclick="() => applyFilters()">Подобрать</button>


или

<button class="btn_access func-during" onclick="function(){ applyFilters() }">Подобрать</button>


или

<button class="btn_access func-during" onclick="applyFilters">Подобрать</button>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы