2016-05-20 84 views
1

我有一個<select>元素,其中加載了select2。之後,我進行ajax調用,將值放入元素中,然後撥打$("#elem").trigger("change.select2")以獲得新的<option> s。如果用戶在搜索框中鍵入內容,則會導致關閉下拉菜單並清空搜索字段。我想要做的是讓用戶繼續打字而不必重新啓動。有沒有辦法做到這一點?將選項添加到select2而不更改其當前狀態

回答

0

不幸的是,我不相信;這是瀏覽器定義的行爲,事實上,當您將項目添加到開放的<select>時,不同的瀏覽器甚至不同的瀏覽器版本將表現不同。

作爲替代方案,您可以嘗試一些類似選擇的組件,如jQuery UI's SelectmenuSelect2;他們不是真正的<select>的,但實際的自定義JS組件的行爲如此。這應該讓你更好地控制行爲。

+1

我已經在使用Select2,只是希望它不會重置用戶喜歡打開下拉菜單並在使用新選項更新時在搜索文本中鍵入的所有內容。 – idlackage

+0

哦,對不起,我沒有注意到那個小細節......文檔沒有提供如何做到這一點的指示,可能有必要研究圖書館的來源。 –

0

讀一遍又一遍的文檔,它似乎像使用<select>元素基本上等於因爲一切都是從DOM檢索沒有動態數據,所以要解決這個問題的唯一方法是使用<input>元素來代替。下面的代碼我想要做什麼:

<input type="hidden" id="elem" /> 

var arr = []; 

$("#elem").select2({ 
    data: { results: arr } 
}); 

$.ajax({ 
    ... 
    success: function(data) { 
     arr = data; 
    } 
}); 

但是這不是關於使用<select>而不是100%的答案,所以我會離開這個作爲不被接受,直到(希望)更相關的答案走來。

相關問題