这个JavaScript if语句有什么问题?

时间:2017-02-06 22:28:31

标签: javascript

当用户在文本框(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键时运行。

2 个答案:

答案 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()的右侧运行。 clicksimulates a mouseclick的方法,返回未定义。因此条件解析为false,而函数体的其余部分将不会运行。

您可以改为检查事件的类型。