1
我正在使用Select2庫通過ajax遠程加載數據。不過,我還想提供默認選項「全部」。現在,我很容易用{name:'All',id:'all'}對象來擴充「results」數組,並且我可以使它成爲'All'最初被選中的,但我想要的是甚至在輸入最小輸入長度之前,有人會將「全部」視爲一個選項。使用Select2遠程加載設置默認選項
這可能嗎?有人知道如何做到這一點?
我正在使用Select2庫通過ajax遠程加載數據。不過,我還想提供默認選項「全部」。現在,我很容易用{name:'All',id:'all'}對象來擴充「results」數組,並且我可以使它成爲'All'最初被選中的,但我想要的是甚至在輸入最小輸入長度之前,有人會將「全部」視爲一個選項。使用Select2遠程加載設置默認選項
這可能嗎?有人知道如何做到這一點?
注:此答案適用於Select2 3.5.2或更早版本。 Select2 4.0的解決方案將使用DataAdapter。
您可以提供自定義query
功能。在實現此功能時,您可以使用Select2 ajax
函數,因爲它已公開公開。
var ALL_OPTION = { id: 'ALL', text: 'All' };
$('#select').select2({
_minimumInputLength: 2,
_ajaxQuery: Select2.query.ajax({
// Place all your ajax options here, as if you were using
// the Select2 "ajax" option.
}),
query: function(options) {
if (options.term.length >= this._minimumInputLength) {
this._ajaxQuery.call(this, options);
} else {
options.callback({ results: [ALL_OPTION] });
}
}
});
不能使用minimumInputLength
選項,因爲它會阻止從獲取調用的query
功能。相反,上面的代碼在query
函數中使用名爲_minimumInputLength
的選項。但是,這意味着您不會在下拉菜單中看到「請輸入2個或更多字符」的消息。 (除非你自己實現某種方式。)
這裏有一個jsfiddle實現了「請輸入2個或更多字符」的消息。
太棒了!我今天要測試這個,然後在這個答案正確的情況下標記出來。它肯定看起來不錯,謝謝約翰! – 2015-02-10 16:15:38
你能提供一個使用Select2 4.0來做這種行爲的例子嗎?它似乎不適合我。 – Ray 2017-08-29 17:43:01