Подтвердить что ты не робот

.chosen.change() - как определить, было ли это действие select или deelect

Как мы можем выяснить, произошло ли событие изменения, произошедшее на компоненте, в результате выбора или отмены? Как мы можем получить значение только выбранного значения или только выделенного значения?

$("#airports-select-2").chosen().change(function(event) {
    console.log('select2 change', event, $(event.target).val());
});

Этот код дает мне все значения, которые были выбраны до сих пор в компоненте мультиселектора? Как это можно изменить, чтобы дать мне значение только что выбранного или отмененного компонента?

4b9b3361

Ответ 1

В каждом пожаре событий можно вызвать:

var  target = $(event.target),
     priorDataSet = target.data("chosen-values"),
     currentDataSet = target.val();

//Diff and compare the delta here.    

target.data("chosen-values", currentDataSet);

До обновления данных для элемента DOM вы можете определить, что такое дельта между наборами значений. Если он в старом, а не в новом, он удален. Если он в новом, а не в старом, то он был добавлен.

Если вам нужен пример того, как определить дельта между двумя массивами, дайте мне знать, и я также подниму пример для этого.

Ответ 2

Из списка :

Выбранный триггер запускает стандартное событие DOM всякий раз, когда делается выбор (он также отправляет параметр выбранный или отмененный, который сообщает вам, какой опция была изменена).

  $('select').on('change', function(event, params) {
    // can now use params.selected and params.deselected
  });