在HTML表单上提交Enter键而不是激活button
我有一个单一的submit
inputHTML表单,但也有各种button
元素。 当用户按下“input”键时,我希望它实际上提交表单,但是(至less在Chrome 15中)我发现它触发了第一个button
(因为之前在HTML中发生的事情比submit
input,我猜)。
我知道,一般来说,你不能强迫浏览器支持特定的submit
input,但我真的认为他们会赞成通过button
元素submit
input。 是否有一个小的调整,我可以使这个工作的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'); } });