使用不定核心实现自动完成搜索的正确方法是什么?
我有一个简单的数组(城市)和一个文本输入字段($ .autocomplete)。当用户输入自动完成文本字段中的第一个字母时,它应输出一个数组,其中所有城市都以输入的字母(术语)开头。
城市:
["Graz","Hamburg","Innsbruck","Linz","München","Other","Salzburg","Wien"]
事件侦听:
$.autocomplete.addEventListener("change", function(e){
var cities = cities_array;
var term = $.autocomplete.value;
var results = _.filter(cities, function (city){
return
});
console.log(results + "this is results");
});
我用_.contains尝试了它,但它只在完全匹配时返回城市(例如Graz仅在输入“Graz”时输出,但在输入“Gr”时不输出。)
http://underscorejs.org/docs/underscore.html的_.filter /._选择集合对我来说不是很清楚,我在这里找到的最接近的是filtering JSON using underscore。
但我不理解indexOf部分。
thx任何建议!
答案 0 :(得分:8)
通过使用#filter
和#indexOf
,您可以非常接近相当不错的自动填充功能。
#indexOf
做的是检查字符串是否包含inputVal
。
如果它不包含它,它将返回-1
因此我们的下面的谓词将一定有效。
这里的另一个小技巧是你(读我)希望它能够搜索s
并获得Innsbruck
和Salzburg
的匹配,因此我投入了{{ 1}}这样你总是用小写字母搜索。
#toLowerCase