событие change для select2 всегда имеет нулевое значение - PullRequest
0 голосов
/ 28 мая 2018

Изменение событий срабатывает, но внутри слушателя у меня всегда есть значение null.Инициализация

       $("#ProductCode").select2({
            dropdownCssClass: "productCodesClass",
            ajax: {
                url: "@string.Format("{0}",Url.Content("~/Order/GetProductsByCatalogue"))",
                data: function(params){
                    var query = {
                        search: params.term,
                        catalogueID: $("#CatalogueID").val(),
                        pageSize: 20
                    }
                    return query;
                },
                processResults: function (data) {
                    var parseData = $.parseJSON(data);
                    var codes_array = [];
                    $.each(parseData, function (i, p) {
                        codes_array.push({ id: p.ProductID, text: p.ProductCode + '-' + p.Title });
                    });
                    return {
                        results: codes_array
                    };
                }
            }
        });

Событие изменения вызова с определенным значением:

$("#ProductCodeAlpha").val(pCatalogueID).trigger('change');

Внутреннее значение прослушивателя событий всегда равно нулю:

 $("#ProductCode").on('change', function (e, source) {
            var productID = $(this).val(); // $(this).val() is ALWAYS NULL 
 });

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Я нашел решение Здесь

в разделе: Предварительный выбор параметров в удаленном источнике (AJAX) Select2.

Для элементов управления Select2которые получают свои данные из источника AJAX, использование .val () не будет работать.Опции еще не будут существовать, потому что AJAX-запрос не запускается до тех пор, пока не будет открыт элемент управления и / или пользователь не начнет поиск .... Следовательно, лучший способ справиться с этим - просто добавить предварительно выбранный элемент какновая опция.

Ссылка также содержит необходимый код js.

0 голосов
/ 28 мая 2018

Вы уже пробовали этот метод?

$("#ProductCode").on("select2:select", function (e, source) { 
   var val = $(e.currentTarget).val();
   console.log(val);
});

если нет, надеюсь, это поможет.

...