Select2 忽略某些输入?

Posted

技术标签:

【中文标题】Select2 忽略某些输入?【英文标题】:Select2 ignore certain input? 【发布时间】:2014-07-09 00:48:43 【问题描述】:

所以我使用基于 Select2 JQuery 的替换选择框。

我已经为通过 ajax 进行远程数据搜索进行了设置(在我找到的示例的帮助下),效果很好。我的最小输入值为 3,因此用户必须在搜索开始前输入至少 3 个字符(否则“A”将返回 90% 的可搜索值)。

不幸的是,我的大部分可搜索值也以“The”开头。因此,如果用户键入“The”,则返回 50% 的结果,并在一个巨大的下拉列表中填充基本未过滤的结果……不理想!

有什么方法可以让 Select2 忽略某些固定短语,即输入“The”不应该计入最少 3 个字符数!

$('#searchInput').select2(
    minimumInputLength: 3,
    placeholder: 'Please search here ...',
    ajax: 
        url: "/api/v1/institutes",
        dataType: 'json',
        quietMillis: 100,
        data: function(term, page) 
            return 
                query: term
            ;
        ,
        results: function(data, page ) 
            return  results: data 
        
    ,
    formatResult: function(institute)  
        return "<div class='select2-user-result'>" + institute.name + "</div>"; 
    ,
    formatSelection: function(institute)  
        return institute.name; 
    ,
    initSelection : function (element, callback) 
        var elementText = $(element).attr('data-init-text');
        callback("term":elementText);
    
);

【问题讨论】:

不确定 select2 是否有相应的 API,但解决此问题的另一种方法是修改您的 API 服务器进程(如果可能)以不搜索“the”或“the”和仅在他们键入第 4/5 个字母时,然后返回结果。同时,您可以为只输入“the”或您识别的任何其他词的人返回“搜索词太宽泛”。 查看文档:ivaynberg.github.io/select2 看起来您可以将 ajax: 替换为 query: 对于您自己的自定义函数,您必须自己编写 ajax 代码,但这意味着您可以添加任何自定义检查. 您的/api/v1/institutes 是什么样的?难道你不能在查询你的表之前创建一个过滤器来忽略 The 吗? 哦,哇,我才意识到这是从 2014 年开始的,哈哈 【参考方案1】:

您可以查看Select2 docs - search,您可以在其中自定义以匹配您的模式。

【讨论】:

【参考方案2】:

我遇到了同样的问题。我通过在 html 代码中使用“data-minimum-input-length”属性解决了这个问题。

<select id="mySelect" data-minimum-input-length="3"></select>

【讨论】:

以上是关于Select2 忽略某些输入?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Select2 和远程数据禁用某些选项

如何将 Select2 中某些单词的字体更改为粗体

单击某些按钮后select2中的动态选项

如何将 Flask-Admin 中的某些字段动态替换为 Select2?

Select2 搜索输入在打开时未获得焦点

自定义组件选择2