2

いくつかの入力ボックスとそれに対応する入力ボタンを備えた HTML フォームがあります。最初の入力ボックスに何かを入力して、Enterまたは ボタンを押すと、正常に動作します。しかし、他のボックスを押すEnterと、最初のボックスにあるかのように機能します。ボタンは正常に動作します。

ここに私が持っているコードがあります:

<script type="text/javascript">
  function fn (num) {
    alert(num);
    document.getElementById(num).focus();
  }
</script>
</head>
<body>
<form>
  <input id="1" type="text"></input> <button onclick="fn(1);">press</button><br/>
  <input id="2" type="text"></input> <button onclick="fn(2);">press</button><br/>
  <input id="3" type="text"></input> <button onclick="fn(3);">press</button><br/>
</form>

どうやらこれは ECMA の「癖」です (私は FF18.0.1 と Safari 5.1.7 でテストしました)。この癖の修正はありますか?

私が見つけた 1 つの解決策は、入力ボックスごとに 1 つのフォームを追加することです。

<form>
  <input id="1" type="text"></input> <button onclick="fn(1);">press</button><br/>
</form>
<form>
  <input id="2" type="text"></input> <button onclick="fn(2);">press</button><br/>
</form>
<form>
  <input id="3" type="text"></input> <button onclick="fn(3);">press</button><br/>
</form>

これはバグですか、それとも機能ですか? より良い解決策はありますか?提案をありがとう。

4

2 に答える 2

2

onClickの代わりにonKeyPressを使用することをお勧めします。これを試して:

function myKeyPress(args) {
  if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
    // do something here (enter has been pressed)
  }
  else {
    return false; // somehow prevents "default" form behaviors
  }
}
于 2013-01-21T21:53:00.383 に答える
0

これを試して :

$("id").keypress(function(e) {
    if(e.which == 13) {
        respective functions
    }
});

また

 <input type="text" name="q" id="q" 
        onkeypress="if (event.keyCode == 13) {call function}" />
于 2013-01-21T21:51:07.857 に答える