2016-12-06 109 views
0

使用Select2 v4.0.3。如何判断select2何时不可见地显示当前选定的值?

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

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

我已经试过检查这样的:

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

的值。然而始终是相同的,表示“VAL”方法不是选择2控制是什么明显表现,正是它认为它显示

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

+0

@ ingredient_15939小提琴,所以会得到一个清晰的想法。 – Santhucool

+0

sel.select2(“val”)将返回一个ID /文本对象数组,其中sel.val()将返回一个字符串。 – Bindrid

回答

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(“改变......在扳机上定义的,所以我说第二个参数‘再同步’告诉登记的处理程序没有做任何事情是这样的:。

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

    } 

}); 

然后我触发像这样

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

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

sel.trigger("change"); 

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

相关问题