select2 下拉选择后首次未触发change事件

问题现象:
select2 下拉选择框,首次切换到“全部”选项不会触发change事件。

问题背景:
select2 下拉选择框,有设置默认值(非全部),在加载数据时,改动后端返回数据,加了一条“全部”的下拉选择内容:

list.unshift({'id':'','text':'全部'});

这里写图片描述
这里写图片描述

问题分析:
首次切换到“全部”选项后,并未触发change事件;
而首次切换到其他选项均可触发change事件;
在首次切换到“全部”后,再切换到其他选择,再切换回“全部”可以触发change事件。

经分析,应该是首次那个id的默认值为空,而select2虽然赋值下拉框,但只是显示,可能并未真正存储,所以无法触发change。

修改为:

list.unshift({'id':'-10000','text':'全部'});

规避了此问题。

问题真正原因不知道是否正确,欢迎大神们指导。
附下我初始化的代码:

initSelection: function (element, callback) {
    var deptId = patientInfo.DEPT_ID;
    var deptName = patientInfo.DEPT_NAME;
    var data = { id: deptId, text: deptName};
    callback(data);
}

猜你喜欢

转载自blog.csdn.net/dorothy1224/article/details/81121973