我正在创建自己的自动完成功能(不使用jquery UI)。在输入输入时,我检查源数组以查看是否可以将用户输入与任何内容匹配:

var input_val = $input.val().toLowerCase();

$.each(array, function(i, suggestion){
    if(suggestion.toLowerCase().match(input_val)){
          //add the item to the autocomplete dropdown
    }
});


我的问题是.match()太基本了。例如,如果用户在位置输入字段中键入“ t”,则.match()将对“ texas”为正,但对于“ fleet”将为正,因为两者都带有“ t”。

我希望从数组中单词的开头开始,找到一种更好的方法来搜索和/或匹配用户输入?

最佳答案

做这样的事情:

var input_val = $input.val().toLowerCase();

$.each(array, function(i, suggestion){
    if(suggestion.toLowerCase().indexOf(input_val) === 0){
          //add the item to the autocomplete dropdown
    }
});


这将检查建议是否以输入值开头(因为大海捞针(“得克萨斯”)中针的索引(“ t”)为0,则在开头),如果有,则将其添加到列表中。

07-24 14:58