#jquery #bootstrap-select
#jquery #bootstrap-select
Вопрос:
Я использую bootstrap-select и хочу иметь выпадающий список зависимых. Первый — категория :
<select class="selectpicker" id="category">
<option value="1"> Fruit </option>
<option value="2"> Animal</option>
</select>
Второй представляет собой список элементов, класс указывает категорию
<select class="selectpicker" id="items">
<option class="1" value="1"> Banana </option>
<option class="1" value="2"> Apple </option>
<option class="2" value="3"> Cat </option>
<option class="2" value="4"> Dog</option>
</select>
Моя цель состоит в том, чтобы, когда пользователь выбирает фильтр по одной или нескольким категориям, он фильтрует также выпадающий список элементов
Этот код работает для одного выбора, но не для 2. Как я могу это сделать?
<script>
$("#category").change(function () {
var category= $(this).val());
$('option').each(function() {
if ($(this).hasClass(category)) {
$(this).show();
} else {
$(this).hide();
}
});
$('.selectpicker').selectpicker('refresh');
});
</script>
Ответ №1:
Вам нужно перебрать items
параметры выбора, но в вашем текущем коде вы проверяете опцию обоих полей выбора, поэтому значения, которые не имеют требуемого класса, также скрываются из category
поля выбора.Вместо того, чтобы изменить $('option')
$('#items option')
, а затем изменить значение, вы можете установить какой-либо параметр по умолчанию, как выбранный, используя .val("default").trigger('change')
items
поле выбора.
Демонстрационный код :
$("#category").change(function() {
var category = $(this).val();
//loop through second selects options
$('#items option').each(function() {
//if option has default class
if ($(this).hasClass(category) || $(this).hasClass("default")) {
$(this).show();
} else {
$(this).hide();
}
});
$('.selectpicker').selectpicker("refresh");
$('#items').val("0").trigger('change');//set default value as selected
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.18/css/bootstrap-select.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.18/js/bootstrap-select.min.js"></script>
<select class="selectpicker" id="category">
<option value="1"> Fruit </option>
<option value="2"> Animal</option>
</select>
<select class="selectpicker" id="items">
<!--added this just to keep default value selcted-->
<option class="default" value="0"> --Select-- </option>
<option class="1" value="1"> Banana </option>
<option class="1" value="2"> Apple </option>
<option class="2" value="3"> Cat </option>
<option class="2" value="4"> Dog</option>
</select>