0

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

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

谁能帮我解决这个问题..

先感谢您。

4

2 回答 2

0

我不完全确定您希望如何对结果进行排名,起初我以为您希望以字符串开头的项目位于顶部,但后来我不明白 'aab' 应该如何排在 'bab' 之前搜索查询“ab”。

无论如何,如果您想根据搜索查询对结果进行排序,我认为您有几个选择。

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

第二,如果您决定将其全部保留在客户端,则populateDropdown在库中方法的开头重新排序结果数组(c. 843 行)

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

希望这能给大家一些思考,祝你好运!

于 2013-09-12T15:47:54.127 回答
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);
于 2013-09-16T12:21:57.360 回答