Bootstrap Selectpicker не сбрасывается с помощью встроенных функций
У меня есть массив Bootstrap Selectpickers для фильтрации результатов из базы данных. Мне нужен способ сброса всех selectpickers до "Ничего Не выбрано", это мой код:
HTML
<div class="row">
<div class="col-md-3">
<label>By Group</label>
<select id="groups" name="group" class="form-control selectpicker" multiple></select>
</div>
<div class="col-md-3">
etc...
</div>
</div>
JS
ajax_fetch('build_group_options', {groupno:groupno}).done(function(html) {
//var html is a list of options in html format
$('#groups').html(html).find('option[value=""]').remove();
//refresh the selectpicker to make sure options are registered in the picker
$('.selectpicker').selectpicker('refresh');
});
Попробуйте сбросить все пикеры:
$('#reset_filters').click(function() {
$('.selectpicker').selectpicker('deselectAll');
$('.selectpicker').selectpicker('render');
$('.selectpicker').selectpicker('refresh');
$(this).closest('form').find('.selectpicker').each(function() {
$(this).selectpicker('render');
});
});
Как вы можете видеть, я перепробовал все функции для сброса, но безрезультатно, поэтому я, очевидно, делаю что-то неправильно дальше по логике.
2 ответа:
Я получил решение из следующего кода.Попробуйте
$("#listID").val('').trigger('change');
А также вы можете попробовать это
$("#listID").val('').selectpicker('refresh');
Так что я посмотрел в selectpicker.JS file, функции
deselectAll
иselectAll
фильтруют свои соответствующие параметры по нескольким аргументам (см. строку 884):deselectAll: function () { this.findLis(); this.$lis.not('.divider').not('.disabled').filter('.selected').filter(':visible').find('a').click(); }
Небольшая поломка:
.not('.divider') //prevents the divider receiving a click event! .not('.disabled') //ignore any disabled elements .filter('.selected') / .not('.selected') //depending if its selectAll() or deselectAll() .filter(':visible') //prevent any non-visible element receiving a click event!?
Моей проблемой был
.filter(':visible')
, список не был виден, когда событие click было вызвано, поэтому эти параметры были отфильтрованы и, следовательно, не были "нажаты" / "отменены". Я внес изменения в свою версию плагина, и теперь моя кнопка "Сброс" работает, как и ожидалось. Новая линия это:
this.$lis.not('.divider').not('.disabled').filter('.selected').find('a').click();