自动完成单词的任何部分

时间:2014-02-25 00:21:30

标签: javascript jquery typeahead.js twitter-typeahead bloodhound

我正在寻找的是显示建议,不仅仅是单词的开头,而且是否符合单词的任何部分。

例如,

如果我有一个单词列表[Manimal,animal,person,erson]

当我输入动物 ani 时,它应显示动物和动物,或者如果我输入儿子应该同时显示人和儿子

我怎么能用typeahead和bloodhound来做这件事?

我试过了

var jobCodes = new Bloodhound({
  datumTokenizer: function (d) { return [d.JobName]; },
  queryTokenizer: Bloodhound.tokenizers.whitespace,
  prefetch: "/api/jobservice/getjobcodes"
});

Or 

var jobCodes = new Bloodhound({
  datumTokenizer: function (d) { return Bloodhound.tokenizers.nonword(d.JobName); },
  queryTokenizer: Bloodhound.tokenizers.whitespace,
  prefetch: "/api/jobservice/getjobcodes"

});

1 个答案:

答案 0 :(得分:0)

创建/获取要检查的字符串数组,然后定义一个函数,该函数将字符串数组作为第一个参数,将子字符串作为第二个参数。

然后创建一个空数组,如果存在结果,将保存结果。

循环遍历数组中包含的每个字符串,如果其中任何字符串包含子字符串,则将该字符串推送到结果数组中。

最后,如果有结果,请退回。否则返回“无结果”。

var phrases = ["lazy", "little", "laughing", "ladies"];
var checkStringsForSubString = function(str, subStr) {
    var results = [];
    for (var i = 0; i < phrases.length; i++) {
        if (str[i].indexOf(subStr) != -1) {
            results.push(str[i]);
        }
    }
    if (results.length > 0) {
        return results;
    } else {
        return "no results";
    }
};
checkStringsForSubString(phrases, "la");