我正在使用Select2库通过ajax远程加载数据。但是,我还想提供一个默认选项“all”。现在,我很容易使用{name:'All',id:'all'}对象来扩充“results”数组,我可以这样做'All'最初被选中,但我想要的是那个甚至在他们输入最小输入长度之前,有人会将“全部”视为选项。
这可能吗?有人知道如何做到这一点吗?
答案 0 :(得分: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
函数。相反,上面的代码在_minimumInputLength
函数中使用了名为query
的选项。但是,这意味着您不会在下拉列表中收到“请输入2个或更多字符”消息。 (除非你以某种方式自己实现它。)
这是一个实现“请输入2个或更多字符”消息的jsfiddle。