select2上的更改事件始终具有空值

时间:2018-05-28 13:44:18

标签: jquery jquery-select2

更改事件触发但内部侦听器我有alwyas 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');

Inside Event Listener值始终为null:

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

2 个答案:

答案 0 :(得分:1)

我找到了解决方案Here

部分:预选远程源(AJAX)Select2中的选项。

对于从AJAX源接收数据的Select2控件,使用.val()将无效。这些选项还不存在,因为在控件打开和/或用户开始搜索之前不会触发AJAX请求.... 因此,处理此问题的最佳方法是简单地将预先选择的项目添加为新选项。

Link还需要js代码。

答案 1 :(得分:0)

你尝试过这种方法吗?

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

如果没有,我希望这有帮助。