【问题标题】:Setting default option with Select2 remote loading使用 Select2 远程加载设置默认选项
【发布时间】:2015-02-05 20:59:30
【问题描述】:

我正在使用 Select2 库通过 ajax 远程加载数据。但是,我还想提供一个默认选项“全部”。现在,我可以很容易地用 {name: 'All', id: 'all'} 对象来扩充“结果”数组,并且我可以做到这一点,因此最初选择了“全部”,但我想要的是有人甚至在输入最小输入长度之前就将“全部”视为一个选项。

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

【问题讨论】:

    标签: javascript jquery ajax jquery-select2


    【解决方案1】:

    注意:此答案适用于 Select2 3.5.2 或更早版本。 Select2 4.0 的解决方案将使用 DataAdapter。

    您可以提供自定义query 函数。在实现这个函数的时候,你可以使用Select2ajax函数,因为它是公开的。

    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 个或更多字符”消息的 jsfiddle

    【讨论】:

    • 太棒了!我今天要对此进行测试,然后将此答案标记为正确(如果有效)。它看起来确实不错,谢谢约翰!
    • 您能否提供一个使用 Select2 4.0 执行此行为的示例?它似乎对我不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 2014-12-08
    相关资源
    最近更新 更多