更改事件触发但内部侦听器我有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
});
答案 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);
});
如果没有,我希望这有帮助。