在HTML表单上提交Enter键而不是激活button

我有一个单一的submitinputHTML表单,但也有各种button元素。 当用户按下“input”键时,我希望它实际上提交表单,但是(至less在Chrome 15中)我发现它触发了第一个button (因为之前在HTML中发生的事情比submitinput,我猜)。

我知道,一般来说,你不能强迫浏览器支持特定的submitinput,但我真的认为他们会赞成通过button元素submitinput。 是否有一个小的调整,我可以使这个工作的HTML,或者我将不得不拥抱某种Javascript方法?

下面是一个粗略的HTML模型:

 <form action="form.php" method="POST"> <input type="text" name="field1"/> <button onclick="return myFunc1()">Button 1</button> <input type="submit" name="go" value="Submit"/> </form> 

你可以使用jQuery:

 $(function() { $("form input").keypress(function (e) { if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) { $('button[type=submit] .default').click(); return false; } else { return true; } }); }); 

您不需要JavaScript来select您的默认提交button或input。 你只需要用type="submit"来标记它,其他的button用type="button"标记它们。 在你的例子中:

 <button type="button" onclick="return myFunc1()">Button 1</button> <input type="submit" name="go" value="Submit"/> 

试试这个,如果input键被按下,你可以像这样捕获它,例如我开发了一个答案,那天htmlbutton指定select ,看看这是否有帮助。

指定表单名称,例如yourFormName那么你应该能够提交表单,而不必关注表单。

 document.onkeypress = keyPress; function keyPress(e){ var x = e || window.event; var key = (x.keyCode || x.which); if(key == 13 || key == 3){ // myFunc1(); document.yourFormName.submit(); } } 

鉴于只有一个(或者这种解决scheme可能甚至没有一个)提交button,这里是基于jQuery的解决scheme,将在同一页上的多个表单工作…

 <script type="text/javascript"> $(document).ready(function () { var makeAllFormSubmitOnEnter = function () { $('form input, form select').live('keypress', function (e) { if (e.which && e.which == 13) { $(this).parents('form').submit(); return false; } else { return true; } }); }; makeAllFormSubmitOnEnter(); }); </script> 

我只是在Chrome和Firefox以及IE10中都这样做了。

如上所述 – 确保您已经标记了type =“button”,“reset”,“submit”等,以确保正确级联并select正确的button。

也许还可以把它们全部设置成相同的forms(即所有这些都适合于我)

我刚碰到这个问题。 我是一个从input更改为button并且我有一个严重的/>标签终止符:

所以我有:

 <button name="submit_login" type="submit" class="login" />Login</button> 

并刚刚修改为:

 <button name="submit_login" type="submit" class="login">Login</button> 

现在工作就像一个魅力,总是恼人的小东西… HTH

 $("form#submit input").on('keypress',function(event) { event.preventDefault(); if (event.which === 13) { $('button.submit').trigger('click'); } });