当用户在文本框(KeyCode === 13
)中按Enter键时,该函数会运行,但我无法使用searchButton
function myFunction(e) {
if(e.keyCode === 13 || document.getElementById("searchButton").click()){
e.preventDefault();
var searchValue = document.getElementById("mySearch").value;
for(var i = 0; i < users.length; i++){
if(users[i]['last_name'] === searchValue){
document.getElementById("return").innerHTML = JSON.stringify(users[i]);
return;
}
}
}
}
<input type="search" id="mySearch" onkeypress="myFunction(event)" />
<button id="searchButton" onclick="myFunction(e)">SEARCH</button>
问题是||
表达式吗?该功能应在用户按searchButton
或按Enter键时运行。
答案 0 :(得分:8)
对document.getElementById("searchButton").click()
的调用是一种模拟点击的编程方式。
你可能想做的是:
function myFunction(e) {
if((e.target.id === 'mySearch' && e.keyCode === 13) || e.target.id === 'searchButton'){
}
}
答案 1 :(得分:0)
好的,当你按下回车键myFunction
被一个具有keyCode属性的事件调用时,所以这一切都很好。
当您单击按钮时,该事件没有keyCode属性,因此条件document.getElementById("searchButton").click()
的右侧运行。 click
是simulates a mouseclick的方法,返回未定义。因此条件解析为false,而函数体的其余部分将不会运行。
您可以改为检查事件的类型。