Я боролся с проблемой в течение некоторого времени и разместил свой собственный аналогичный question. Проблема с решением сопряжения, приведенная выше, заключается в том, что совпадение используется для соответствия поиску, а просто открытие раскрывающегося списка будет просто соответствовать всему списку и, следовательно, отображать все, что не совсем удовлетворительно.
После начальной ошибки solution я, наконец, прибегал к «разрушению select2 и восстановлению его после фильтрации выбора». Вот решение вопроса, используя этот подход,
//assuming you are usign jquery...
//keep a non-filtered copy of the original select
var $clonedSelect = $('select#select').clone();
$.fn.filterSelect2 = function(class=''){
if($(this).is('select')){
$(this).select2('destroy');
$(this).empty();
$(this).append($('option.'+class, $clonedSelect).clone());
$(this).select2();
}
return $(this);
}
$('select#select').filterSelect2('car'); //will create a select2 with only the car class options.
Я не проверял, но я использовал подобную логику для более сложного случая в недавнем проекте, и нашел, что это работает очень хорошо.