Javascript 根据自动完成数据中选定的数据将文本设置为texfield

Javascript 根据自动完成数据中选定的数据将文本设置为texfield,javascript,html,autocomplete,Javascript,Html,Autocomplete,我使用了w3school的参考资料来自动完成我的输入 现在我想添加一个新的文本字段 <input id="myInput" type="text" name="myCountry" placeholder="Country"> <input id="newInput" type="text" name="myCity" placeholder="City"> 因此,根据w3school中的代码,其中国家是自动完成的,我想要的是,例如,选择“Japan”,然后城市文

我使用了w3school的参考资料来自动完成我的输入

现在我想添加一个新的文本字段

<input id="myInput" type="text" name="myCountry" placeholder="Country">
<input id="newInput" type="text" name="myCity" placeholder="City">


因此,根据w3school中的代码,其中国家是自动完成的,我想要的是,例如,选择“Japan”,然后城市文本字段将设置为Tokyo。可能吗?如何编程?

您需要定义
城市
对象,使用国家名称作为
,城市作为
!您需要在单击事件中进行修改

在这里,我使用东京密钥进行测试,只是为了让其他国家的名称显示您未定义

功能自动完成(inp、arr){
/*autocomplete函数接受两个参数,
文本字段元素和可能的自动完成值数组:*/
无功电流聚焦;
/*当有人在文本字段中写入时执行函数:*/
inp.addEventListener(“输入”,函数(e){
var a,b,i,val=该值;
/*关闭所有已打开的自动完成值列表*/
closeAllList();
如果(!val){返回false;}
currentFocus=-1;
/*创建将包含以下项(值)的DIV元素:*/
a=document.createElement(“DIV”);
a、 setAttribute(“id”,this.id+“自动完成列表”);
a、 setAttribute(“类”、“自动完成项”);
/*将DIV元素作为自动完成容器的子元素追加:*/
this.parentNode.appendChild(a);
/*对于数组中的每个项*/
对于(i=0;i”+arr[i].substr(0,val.length)+“”;
b、 innerHTML+=arr[i].substr(val.length);
/*插入将保存当前数组项值的输入字段:*/
b、 innerHTML+=“”;
/*当有人单击项值(DIV元素)时执行函数:*/
b、 addEventListener(“单击”,函数(e){
/*插入自动完成文本字段的值:*/
inp.value=this.getElementsByTagName(“输入”)[0].value;
newInput.value=城市[inp.value];
/*关闭自动完成值的列表,
(或任何其他打开的自动完成值列表:*/
closeAllList();
});
a、 儿童(b);
}
}
});
/*按键盘上的键执行功能:*/
inp.addEventListener(“向下键控”,函数(e){
var x=document.getElementById(this.id+“自动完成列表”);
如果(x)x=x.getElementsByTagName(“div”);
如果(e.keyCode==40){
/*如果按下向下箭头键,
增加currentFocus变量:*/
currentFocus++;
/*并使当前项目更加可见:*/
addActive(x);
}如果(e.keyCode==38){//up
/*如果按下向上箭头键,
减小currentFocus变量:*/
当前焦点--;
/*并使当前项目更加可见:*/
addActive(x);
}否则如果(e.keyCode==13){
/*如果按ENTER键,则阻止提交表单*/
e、 预防默认值();
如果(当前焦点>-1){
/*并模拟单击“活动”项:*/
如果(x)x[currentFocus]。单击();
}
}
});
函数addActive(x){
/*将项目分类为“活动”的函数:*/
如果(!x)返回false;
/*首先删除所有项目上的“活动”类:*/
清除活性(x);
如果(currentFocus>=x.length)currentFocus=0;
如果(currentFocus<0)currentFocus=(x.length-1);
/*添加类“自动完成活动”:*/
x[currentFocus].classList.add(“自动完成活动”);
}
函数removeActive(x){
/*从所有自动完成项中删除“活动”类的函数:*/
对于(变量i=0;i