Javascript “自动完成”仅匹配单词开头

Javascript “自动完成”仅匹配单词开头,javascript,jquery,html,Javascript,Jquery,Html,这段代码是关于使用外部JSON数组自动完成的。我的问题是,仅当我输入前两个初始单词时,才会显示自动完成。例如,我想找到首都“喀布尔”,我必须输入“Ka”才能在自动完成中找到首都。如果我输入“ab”或“bu”,它不会显示“喀布尔”。请帮帮我 $(函数(){ $(“#答案”)。自动完成({ 最小长度:2, 来源:功能(请求、响应){ 变量显示=[]; $.each(数组、函数(k、v){ if(v.capital.toLowerCase().indexOf(request.term.toLowerC

这段代码是关于使用外部JSON数组自动完成的。我的问题是,仅当我输入前两个初始单词时,才会显示自动完成。例如,我想找到首都“喀布尔”,我必须输入“Ka”才能在自动完成中找到首都。如果我输入“ab”或“bu”,它不会显示“喀布尔”。请帮帮我

$(函数(){
$(“#答案”)。自动完成({
最小长度:2,
来源:功能(请求、响应){
变量显示=[];
$.each(数组、函数(k、v){
if(v.capital.toLowerCase().indexOf(request.term.toLowerCase())==0){
display.push({“label”:v.capital});
返回;
}
});
响应(显示);
},

问题是因为
indexOf
将返回所查找字符串出现的从零开始的索引,如果未找到则返回
-1
。因此,在
if
条件中使用
==0
仅当在源的开头找到搜索字符串时才会出现

要修改此行为,请将条件更改为
!==-1
,:

if (v.capital.toLowerCase().indexOf(request.term.toLowerCase()) !== 1) {

如果上述解决方案运行良好,则将其标记为正确,以便对其他人有所帮助。