0

Web ページに 2 つのテキスト ボックスと 2 つのボタンがあります。

各テキストボックスには、return キーをチェックして特定の JavaScript 関数を呼び出す独自の keypress 関数があります。

しかし問題は、任意のテキスト ボックスに入力を開始してリターン キーを押すと、両方の関数が呼び出されることです。これは Internet Explorer でのみ発生します。

入力タグの属性としてOnkeypressを呼び出している

onkeypress="if(event.keyCode==13) submitEmail();"

onkeypress="if(event.keyCode==13) login();"

ありがとう

4

2 に答える 2

2

これは、イベント バブリングが原因です。ある要素でイベントが発生すると、それを含むすべての要素でも発生し、DOM ツリーを順に上っていきます。したがって、入力ボックスで Return キーを押すと、ウィンドウでも Return キーが押されます。

要素の属性に追加return false;すると、バブリングが防止されます。onkeypressinput

<input ... onkeypress="if(event.keyCode==13) { submitEmail();return false; }">
于 2013-06-27T21:45:11.287 に答える
0

キープレス機能を設定する前に、各入力をターゲットにして、スクリプトタグまたは外部jsファイルでそれらを設定してみてください。

<input type="text" id="email">
<input type="text" id="login">

<script>  
var emailBox = document.getElementById("email")
emailBox.onkeypress = function(e){
  if(e.keyCode == 13) submitEmail();
}

var loginBox = document.getElementById("login")
loginBox.onkeypress = function(e){
  if(e.keyCode == 13) login();
}
</script>
于 2013-06-27T21:49:44.663 に答える