将静态数组传递给jquery-tokeninput

时间:2013-09-12 12:42:28

标签: jquery jquery-autocomplete jquery-tokeninput

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

喜欢数组['aa','bab','aab','abb']如果我输入ab我会在'abb'和'aab'之前得到'bab'。

任何人都可以帮我解决这个问题..

提前谢谢。

2 个答案:

答案 0 :(得分:0)

我不完全确定您希望如何对结果进行排名,起初我以为您想要以字符串开头的项目位于顶部,但之后我不知道'aab'应该如何才会出现' bab'搜索查询'ab'。

无论如何,如果您想根据搜索查询订购结果,我认为您有几个选择。

我建议的第一个是构建服务器端脚本来处理这个问题。将任何完全匹配拉为您需要返回的JSON数组中的第一项是一件简单的事情。这是一个非常黑客的方式!

第二个,如果你真的希望将它保留在客户端,那就是在库中populateDropdown方法的开头重新排序结果数组(c。第843行)

最后,最优雅,最正确的方法是重新配置onResult回调,同时将搜索查询作为参数,然后您可以使用以下方法对结果进行排序。回调方法。

希望这能提供一些思考,祝你好运!

答案 1 :(得分:0)

我已经拍摄了两个搜索项目,并且匹配位于每个单词的第一个字母上。限制为15个结果。这给了我完美的结果。

//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);