带下划线/ JS的自动完成功能

时间:2014-12-26 12:03:32

标签: search filter autocomplete underscore.js

使用不定核心实现自动完成搜索的正确方法是什么?

我有一个简单的数组(城市)和一个文本输入字段($ .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任何建议!

1 个答案:

答案 0 :(得分:8)

通过使用#filter#indexOf,您可以非常接近相当不错的自动填充功能。

#indexOf做的是检查字符串是否包含inputVal。 如果它不包含它,它将返回-1因此我们的下面的谓词将一定有效。

这里的另一个小技巧是你(读我)希望它能够搜索s并获得InnsbruckSalzburg的匹配,因此我投入了{{ 1}}这样你总是用小写字母搜索。

#toLowerCase