Как получить значение select2: unselect

как я могу получить значение невыбранной опции в Select2 с помощью select2:unselect

$('#mySelect').on("select2:unselect", function(e){

    var unselected_value = $('#mySelect').val(); // using this shows 'null'
    // or using below expression also shows 'null'
    var unselected_value = $('#mySelect :selected').val();

    alert(unselected_value);
}).trigger('change');

в приведенном выше предупреждении кода отображается "null"

Мне нужно использовать select2:unselect, потому что событие "change" будет воспринимать :select и :unselect оба.

Ответ 1

Наконец, у меня есть решение, и это: Значение параметра unselected доступно только до того, как оно не выбрано. Не в select2:unselect скорее в select2:unselecting теперь код будет:

$('#mySelect').on("select2:unselecting", function(e){
         var unselected_value = $('#mySelect').val();
         alert(unselected_value);
    }).trigger('change');

Ответ 2

Фактически, значение данных находится внутри объекта события. Было бы полезно, если вы имеете дело с select2 multiple values.

function(e){
    console.log(e.params.data)
}

Ответ 3

Это старый вопрос, но, возможно, этот ответ поможет кому-то. Я использую Select2 v4.0.3 с несколькими значениями/тегами и нуждаюсь только в том, что идентификатор удаляемого конкретного объекта. Я действительно не хотел использовать событие unselecting, как упоминалось в других ответах. В событии unselect нет объекта args, поэтому вы можете получить идентификатор того, который вы пытаетесь удалить, как это...

jQuery('.mySelect2').on("select2:unselecting", function(e){
    return true; // I don't use this unselecting event but here is how you could use it to get the ID of the one you are trying to remove.
    console.log(e);
    console.log(e.params);
    console.log(e.params.args.data);
    console.log(e.params.args.data.id);
    //console.log(e.params.args.data.tag); data.tag is specific to my code.
});

jQuery('.mySelect2').on('select2:unselect', function (e) {
    console.log(e);
    console.log(e.params);
    console.log(e.params.data);
    console.log(e.params.data.id);
    //console.log(e.params.data.tag); data.tag is specific to my code.

    /*
    Now you can do an ajax call or whatever you want for the specific
    value/tag that you are trying to remove which is: e.params.data.id.
    */

Ответ 4

Невыбранный элемент проходит через e.params.data. Мы можем получить доступ к его значению с помощью "id", и если вам нужен текст, вы можете использовать "data.text".

 $("select").on("select2:unselect", function (e) {
             var value=   e.params.data.id;
             alert(value);
    });

Ответ 5

Получение определенного значения параметра, если вы используете несколько тегов:

var unselected_value = $('#mySelect option:selected').val();
alert(unselected_value);

Ответ 6

Это мое решение изменить цвет фона города на карте SVG, ища название конкретного города. Надеюсь, это поможет вам.

 $(".js-example-diacritics").on("select2:unselect", function(evt) {
                var element = evt.params.data.element;
                townColor(element.text, unHighLightColor);
            });

К методу townColor() Я передаю текст (название города) элемента select2 unselected и константу с именем unHighLightColor, который содержит имя цвета.

Ответ 7

в Select2 4.0.3 i'am found e.params было изменено. Таким образом, чтобы найти id из unselecting item, измените свой код следующим образом:

$('select').on('select2:unselecting', function (e) {
    var id = e.params.args.data.id; //your id
    alert('Are You Sure ?');
    e.preventDefault();
  // Do something with your id
});

Ответ 8

используйте $ (this).val(), это вернет вам последнее значение, отмеченное в select

$('#mySelect').on("select2:unselecting", function(e){
         alert($(this).val());
    })