Запустить обратный вызов, когда выбор был сделан с помощью select2 4.0, и получить значение последнего выбора

Я использую последнюю версию Select2 (4.0) и не могу понять, как запустить событие, когда был сделан выбор, И получить последнее выбранное значение (при работе с полями выбора, где возможен множественный выбор).

В более старых версиях Select2, если я правильно помню, событие "onchange" выбора, к которому был прикреплен плагин, срабатывало, когда был сделан выбор, это не работает в данный момент.

Мне удалось запустить функцию javascript при изменении выбора полей выбора, но я еще не могу определить последний выбранный идентификатор. Вот как я это сделал:

jQuery("#select2_holder").on("change", function(e) { 
        console.log(arguments);
});

Я также пытался регистрировать аргументы, но и там не могу найти нужную информацию.

Я прочитал документацию на официальном сайте, но ничего не нашел в ней о callback-функциях.

Есть ли здесь кто-нибудь, кто мог бы указать мне правильное направление?

Благодарю вас!


person Adam Baranyai    schedule 31.03.2015    source источник


Ответы (2)


Select2 предоставляет событие select2:select, которое запускается каждый раз, когда выбирается новое значение. Для одиночного выбора это эквивалентно change с некоторыми дополнительными метаданными.

Вы можете получить выбранный объект данных, используя evt.data, где evt — это первый аргумент, переданный в обработчик событий.

jQuery("#select2_holder").on("select2:select", function (evt) {
  console.log(evt.data);
});

Вы можете найти живой пример событий в примерах Select2.


В более старых версиях Select2, если я правильно помню, событие "onchange" выбора, к которому был прикреплен плагин, срабатывало, когда был сделан выбор, это не работает в данный момент.

Это правильно, в Select2 3.x мы модифицировали стандартное событие change и добавили ему несколько дополнительных атрибутов. Поскольку это (к сожалению) никогда не было последовательным и вызывало проблемы, когда люди хотели запускать change вручную, мы не изменяем стандартное событие change в Select2 4.0.

person Kevin Brown    schedule 31.03.2015
comment
Спасибо за быстрый ответ! - person Adam Baranyai; 01.04.2015

Предыдущий пример хорош, но 1 ошибка: нужно использовать select2:selecting вместо select2:select

Итак, у нас есть

jQuery("#select2_holder").on("select2:selecting", function (evt) {
  console.log(evt);
});
person Міла Калуцька    schedule 06.07.2016