2017-02-06 22 views
0

ユーザーを押すが、テキストボックス(KeyCode === 13)に入力したときに関数が実行されますが、私はそれがsearchButtonこのJavaScript ifステートメントで何が問題になりますか?

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

JavaScript '.click()'は常に 'undefined'を返します – Blazemonger

+0

' e.type == 'をクリック' && this.id == 'searchButton'' ** –

答えて

8

document.getElementById("searchButton").click()の呼び出しは、クリックをシミュレートするプログラム的な方法です。あなたはおそらく行うには何を意味

がされています。あなたが入力したキーmyFunctionを押したときにそれがすべて良いですのでので、キーコードプロパティを持つイベントで呼び出され

+0

**アップデート**これは何らかの理由で機能しません...私はなぜそれが完全に動作するように見えるかわかりません... [JsFiddle](https://jsfiddle.net/hpjvkgqw/) – gezer4000

+0

括弧がありませんでした...残念です。 – Dancrumb

+0

問題ありません。編集をありがとう! – gezer4000

0

[OK]をクリックします。

ボタンをクリックすると、イベントにはkeyCodeプロパティがないため、条件式document.getElementById("searchButton").click()の右側が実行されます。 clickは、simulates a mouseclickのメソッドで、未定義に戻ります。したがって、条件付きはfalseになり、残りの関数本体は実行されません。

代わりに、イベントの種類を確認できます。

関連する問題