【发布时间】: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 年开始的,哈哈
标签: javascript jquery jquery-select2