首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将静态数组传递给jquery-tokeninput

将静态数组传递给jquery-tokeninput
EN

Stack Overflow用户
提问于 2013-09-12 12:42:27
回答 2查看 629关注 0票数 0

我将一个静态数组传递给jquery令牌输入,但是搜索结果并不完全匹配,因为没有服务器端查询的。

就像数组'aa','bab','abb‘,'abb’,‘abb’,如果我键入ab,我就会在‘abb’和‘abb’之前得到'bab‘。

有人能帮我解决这个问题吗。

提前谢谢你。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-12 15:47:54

我不完全确定您希望如何对结果进行排序,起初我以为您希望以字符串开头的项位于顶部,但我不认为在搜索查询'ab‘时,“aab”应该如何出现在'bab’之前。

无论如何,我认为您有几个选项,如果您希望根据搜索查询来排序结果的话。

我建议的第一个方法是构建一个服务器端脚本来处理这个问题。这是一个简单的问题,就是将任何精确匹配作为您需要返回的JSON数组中的第一项。这就是解决问题的方法!

第二种方法,如果您确实希望保留所有客户端的话,将在库中的populateDropdown方法开始时重新排序结果数组(c行843)。

最后,也是最优雅和“正确”的方法是重新配置onResult回调,以便也将搜索查询作为参数,然后可以使用回调方法来排序结果。

希望这能给你一些思考的食物,祝你好运!

票数 0
EN

Stack Overflow用户

发布于 2013-09-16 12:21:57

我已经采取了两个搜索项目和匹配是在每个单词的第一个字母。限制在15个结果。这给我带来了完美的结果。

代码语言:javascript
复制
//Do the search through local data
var results = $.grep(array, function (row) {
  return row["id"].toLowerCase().indexOf(term.toLowerCase()) > -1;
});
var results1="";
if(results.length<15){
   results1 = $.grep(array, function (row) {
   return row["value"].toLowerCase().indexOf(term.toLowerCase()) > -1;
});
}
var diff = $(results1).not(results).get();
results= $.merge( $.merge([],results), diff);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18764603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档