使用Select2远程加载设置默认选项

时间:2015-02-05 20:59:31

标签: javascript jquery ajax jquery-select2

我正在使用Select2库通过ajax远程加载数据。但是,我还想提供一个默认选项“all”。现在,我很容易使用{name:'All',id:'all'}对象来扩充“results”数组,我可以这样做'All'最初被选中,但我想要的是那个甚至在他们输入最小输入长度之前,有人会将“全部”视为选项。

这可能吗?有人知道如何做到这一点吗?

1 个答案:

答案 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个或更多字符”消息。 (除非你以某种方式自己实现它。)

jsfiddle


这是一个实现“请输入2个或更多字符”消息的jsfiddle