21

我刚刚发现只有一个 INPUT(未隐藏)的 FORM 会在按 Enter 时自动提交。

但是一个包含至少两个输入(未隐藏)的表单在按下回车时不会提交。

(没有一个脚本里面有提交/按钮/输入[type=submit])

看看这个jsfidle。这种行为是否有解释/标准?

<form id="form1" method="POST">
    <p>Does submit:</p>
    <input type="text" placeholder="focus and press enter"/>
</form>

<form id="form2" method="POST">
    <p>Does <strong>not</strong> submit:</p>
    <input type="text" placeholder="does not submit"/>
    <input type="text" placeholder=""/>
</form>
4

3 回答 3

29

此行为是在 HTML 2.0 规范中引入的。有关详细信息,请参阅以下文章:

表单提交和 ENTER 键?

当表单中只有一个单行文本输入字段时,用户代理应接受在该字段中输入作为提交表单的请求

资料来源:W3C 规范

于 2013-07-22T20:54:07.693 回答
4

那是浏览器特定的实现。. . 某些版本的 IE 实际上默认情况下不会这样做,但 Firefox 和其他一些浏览器认为适合做出这样的假设:对于带有一个文本框的表单,用户(或页面设计者)总是希望表单提交从Enter那个领域开始。

实际上有很多次我不得不围绕它编写代码。. . 在我看来,这是更值得怀疑的浏览器设计决策之一。

编辑:

如果您有兴趣,您的问题会有更细致的答案。. . 显然不同的浏览器(及其不同的版本)在这种特定情况下有不同的行为,包括它们是否提交,click事件是否发生等。如果您想阅读更多信息,我可以提供更多信息的链接。

但简短的回答是,如果不是跨浏览器一致支持,它实际上是有意的。

于 2013-07-22T20:46:10.607 回答
1

添加以下内容应该可以在 IE 中使用。

$(document).ready(function() { 
    $('input,select').keypress(function(event) { return event.keyCode != 13; }); 
  });

于 2014-11-24T08:03:17.320 回答