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 中进行了测试)。这个怪癖有解决办法吗?

我发现的一种解决方案是为每个输入框添加一个表单。

<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

您需要使用 onKeyPress 而不是 onClick。尝试这个:

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 回答