我将静态数组传递给jquery令牌输入,但搜索结果并不完全匹配,因为没有服务器端查询...
喜欢数组['aa','bab','aab','abb']如果我输入ab我会在'abb'和'aab'之前得到'bab'。
任何人都可以帮我解决这个问题..
提前谢谢。
答案 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);