如何判断select2何时没有明显显示当前选择的值?

时间:2016-12-06 02:58:19

标签: jquery jquery-select2 jquery-select2-4

使用Select2 v4.0.3。

使用"表单恢复" Firefox中的插件(例如" Lazarus"),表单上的值都已设置,但是像Select2这样的自定义控件未被通知更改。因此,有时SELECT的实际选择值与Select2正在显示的内容之间可能存在差异。

所以我想定期检查所有Select2控件,以确保它们的可见状态是准确的。

我试过像这样检查:

if (sel.select2("val") != sel.val()) { sel.select2("change"); } // needs an update

然而,值总是相同的,表示" val"方法不是可见显示的select2控件,而是它正在显示认为的内容。

我可以使用哪种方法与Select2一起检查其可见状态是否与实际选定的值不匹配?

1 个答案:

答案 0 :(得分:0)

我会尝试这样的事情

// assuming sel is already defined.
var sel2 = sel.select2("val") 
if(sel2 and sel2.length > ){
    if(sel2[0].id != sel.val()) {
        sel.trigger("change");
    } 
}
else {
   // nothing is selected so trigger change to resync
  sel.trigger("change");
}

我在这里使用了类似的代码,我已经有了sel.on("更改...在触发器上定义,我添加了第二个参数" resync"告诉已注册的处理程序什么都不做。看起来像这样:

sel.on("change", function(evt, status) {
     if(status != "resync") {
         // rest of the code

     }

});

然后我像这样触发它

sel.trigger("change", "resync");

或者你可以只是懒惰而只是盲目地触发事件而不进行任何重新同步检查。

sel.trigger("change");

选择处理程序应该完成剩下的工作。