在HTML表单上输入密钥而不是激活按钮

and*_*ers 70 html forms jquery

我有一个HTML表单,只有一个submit输入,但也有各种button元素.当用户按下"回车"键时,我希望它实际上提交表单,但是(至少在Chrome 15中)我发现它触发了第一个button(因为它发生在HTML之前,而不是submit输入, 我猜).

我知道通常你不能强迫浏览器支持特定的submit输入,但我真的认为他们更喜欢submit输入button元素.是否可以对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>
Run Code Online (Sandbox Code Playgroud)

Jes*_*era 128

您不需要JavaScript来选择默认的提交按钮或输入.您只需要标记它type="submit",其他按钮标记它们type="button".在你的例子中:

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

  • 如果你没有设置`type ="按钮"`它不起作用的原因是因为默认情况下,按钮元素是`type ="submit"`.因此,问题中只有一个提交按钮的前提实际上是不正确的. (17认同)
  • 在额外的按钮上设置type ="按钮"和设置type ="submit"是有区别的. (13认同)
  • 它适用于Chrome和Safari.它必须是别的东西. (5认同)
  • 实际上,这在某些浏览器中无法正常工作。我今天刚遇到这个问题,认为type =“ submit”将其设置为默认值,但是在Chrome或Safari中却没有。 (3认同)

Ofi*_*chy 31

你可以使用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;
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

  • 由于这是可接受的答案:向下滚动以获得一个非常简单的纯HTML解决方案. (12认同)
  • HTML 解决方案是正确的答案。浏览器默认处理 (2认同)

dav*_*vid 5

试试这个,如果按下 Enter 键,您可以像这样捕获它,例如,我前几天开发了一个答案html 按钮指定 selected,看看这是否有帮助。

例如指定表单名称,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();
  }
}
Run Code Online (Sandbox Code Playgroud)