2016-12-06 63 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"); 

選擇處理程序應該完成剩下的工作。

相關問題