Для версии select2> = 4.0.0
Другие решения могут не работать, однако следующие примеры должны работать.
Решение 1. Вызывает запуск всех подключенных событий изменения, включая select2.
$('select').val('1').trigger('change');
Решение 2. Вызывает запуск события JUST select2
$('select').val('1').trigger('change.select2');
Посмотрите этот jsfiddle для примеров этого. Спасибо @minlare за решение 2.
Объяснение:
Скажем, у меня есть лучший друг с именами людей. Итак, Боб, Билл и Джон (в этом примере я предполагаю, что значение совпадает с именем). Сначала я инициализирую select2 на моем select:
$('#my-best-friend').select2();
Теперь я вручную выбираю Боба в браузере. Затем Боб делает что-то непослушное, и он мне больше не нравится. Таким образом, система отменяет выбор Боба для меня:
$('#my-best-friend').val('').trigger('change');
Или, скажем, я заставляю систему выбирать следующего в списке вместо Боба:
// I have assume you can write code to select the next guy in the list
$('#my-best-friend').val('Bill').trigger('change');
Примечания к веб-сайту Select 2 (см. Устаревшие и удаленные методы ), которые могут быть полезны для других:
.select2 ('val')
Метод "val" устарел и будет удален в Select2 4.1. Устаревший метод больше не включает параметр triggerChange.
Вместо этого вы должны напрямую вызвать .val для базового элемента. Если вам нужен второй параметр (triggerChange), вам также следует вызвать .trigger ("change") для элемента.
$('select').val('1').trigger('change'); // instead of $('select').select2('val', '1');