Ответ 1
// to disable
$('#statusSelect').select2('disable');
//to enable
$('#statusSelect').select2('enable');
У меня есть вторичный выбор, подчиненный первичному выбору (выберите магазин, затем выберите отдел - идентичный выбор страны, затем выберите состояние).
Я абсолютно не могу получить методы select2 ('enable', false) и ('data', null), независимо от того, сколько другого кода я вырву.
<select id="stores">
<option value="foo">foo</option>
</select>
<select id="depts">
<option value="bar">bar</option>
</select>
// ...some logic that selects a store, then fetches that store depts ...
$('#depts').select2('enable',false);// does not disable control
$('#depts').select2('data',null); // does not clear control
Итак, я вынужден сделать это:
$('select#depts').empty(); // clears HTML element
$('#depts').select2(); // re-enhances select w/ select2
$('#depts').select2('disable',true); // disables
Он ведет себя в jsfiddle, поэтому я не могу даже отправить пример и запросить помощь. Я просто... в тупике.
// to disable
$('#statusSelect').select2('disable');
//to enable
$('#statusSelect').select2('enable');
Это работает для меня во всех браузерах:
$('#statusSelect').select2('destroy');
$('#statusSelect').prop('disabled', true);
$('#statusSelect').select2();
Это дает вам отключенный вход select2.
Для повторной активации просто:
$('#statusSelect').select2('destroy');
$('#statusSelect').prop('disabled', false);
$('#statusSelect').select2();
Нижняя сторона заключается в том, что это приводит к тому, что ваш поле выбора меняет внешний вид на долю секунды, когда select2 уничтожается и повторно применяется.
Кроме того, "readonly" и "disabled" не поддерживаются в более старых версиях select2.
Вероятно, вы испытываете ошибку select2 1104. К сожалению, это все еще проблема в IE8-10, но это не select2 fault. Проблема в том, что IE не запускает событие propertychange, когда элемент отключен, а также не реализует функции MutationObserver, используемые другими браузерами. К счастью, там крошечный плагин jQuery, который я написал, позволит запустить событие propertychange, когда элемент отключен. Вы можете найти здесь здесь.
$('#originalSelect').fireOnDisable().select2();
$('#originalSelect').prop('disabled', true);
теперь должен работать в IE8-10. Если вам нужно поддерживать IE6-7, вы сами!
Если у вас есть уникальный идентификатор для раскрывающегося окна select2, используя этот идентификатор,
$("#id-select2").attr("disabled", true);
Для IE вы должны повторно инициализировать select2 после включения/отключения
// change action disable
$('.custom-select').select2()
.on("change", function(e) {
$('.custom-select').prop("disabled", true).select2(); //call select2
})
// disable alternative
$('.custom-select').prop("disabled", true).select2(); //call select2
не требуется ли это:
$('# depts'). prop ('disabled', false);
так же, как этот вопрос
Если кто-то пытается это сделать в коде сервера .net:
this.mySelect2elementID.Attributes.Add("disabled", "true");