allowClear
является частью конфигурации select2, которая не может быть динамически изменена, как упоминалось здесь :
В настоящее время это невозможно сделать ( изменитьпараметры ) динамически.Общая идея того, что необходимо сделать:
- Экземпляр уничтожен
- Экземпляр повторно инициализирован с измененными параметрами
Хотя есть много подходов для этого, я считаю, что есть один вариант - динамическое изменение параметров:
Предварительная установка параметров как объекта (состоящего из значений по умолчанию):
var options = {
width: '100px',
allowClear: true,
placeholder: 'yooyoo'
};
Функция для инициализации select2, который будет вызываться несколько раз, т.е. при изменении опции.
function initSelect() {
$('#choose').select2(options);
}
Например, давайте обновимзаполнитель - просто измените ключ опции и позвоните initSelect
.
function update() {
options.placeholder = 'test';
initSelect();
};
Аналогичным образом, опция allowClear
также может быть изменена.Вот фрагмент кода:
var data=[{id:0,tag:'foo'},{id:1,tag:'bar'}];
function format(item) { return item.tag };
var options = {
width: '100px',
allowClear: true,
placeholder: 'yooyoo'
};
function update() {
options.placeholder = 'test';
initSelect();
}
function toggleClear() {
options.allowClear = !options.allowClear;
initSelect();
}
function initSelect() {
$('#choose').select2(options);
}
$(document).ready(function () {
initSelect();
$("#button").click(function () {
update();
});
$("#toggleClear").click(function () {
toggleClear();
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://select2.github.io/select2/select2-3.5.1/select2.css" rel="stylesheet"/>
<script src="https://select2.github.io/select2/select2-3.5.1/select2.js"></script>
<select id="choose">
<option></option><!-- Needed to show X image to clear the select -->
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
<option value="4">Option 4</option>
<option value="5">Option 5</option>
</select>
<button id="button">Click</button>
<button id="toggleClear">Toggle Clear Option</button>
Также не существует специального способа сброса allowClear
, как у вас для заполнителя (setPlaceHolder
).Надеюсь это поможет.