2015-02-05 81 views
1

我正在使用Select2庫通過ajax遠程加載數據。不過,我還想提供默認選項「全部」。現在,我很容易用{name:'All',id:'all'}對象來擴充「results」數組,並且我可以使它成爲'All'最初被選中的,但我想要的是甚至在輸入最小輸入長度之前,有人會將「全部」視爲一個選項。使用Select2遠程加載設置默認選項

這可能嗎?有人知道如何做到這一點?

回答

3

注:此答案適用於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


這裏有一個jsfiddle實現了「請輸入2個或更多字符」的消息。

+0

太棒了!我今天要測試這個,然後在這個答案正確的情況下標記出來。它肯定看起來不錯,謝謝約翰! – 2015-02-10 16:15:38

+0

你能提供一個使用Select2 4.0來做這種行爲的例子嗎?它似乎不適合我。 – Ray 2017-08-29 17:43:01