我刚刚发现按Enter键时会自动提交只包含一个INPUT(非隐藏)的FORM。
但是当按下回车时,包含至少两个INPUTS(未隐藏)的表单将不会提交。
(所有脚本都没有提交/按钮/输入[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>
答案 0 :(得分:25)
此行为是在HTML 2.0规范中引入的。有关详细信息,请参阅以下文章:
Form submission and the ENTER key?
当表单中只有一个单行文本输入字段时, 用户代理应接受该字段中的Enter作为提交请求 表格
来源:W3C Specs
答案 1 :(得分:4)
这是一个特定于浏览器的实现。 。 。默认情况下,某些版本的IE实际上不会这样做,但Firefox和其他一些浏览器认为适合假设,对于带有一个文本框的表单,用户(或页面设计者)总是希望表单提交来自该领域的Enter
。
实际上已经有多次我必须围绕它进行编码。 。 。在我看来,这是一个比较值得怀疑的浏览器设计决策。
修改强>
如果您有兴趣,可以为您的问题提供更细微的答案。 。 。显然不同的浏览器(及其不同的版本)在这种特定情况下有不同的行为,包括它们是否提交,是否发生click
事件等。如果你愿意,我可以提供更多信息的链接喜欢阅读更多。
但简短的回答是,它实际上是有意的,如果不是跨浏览器一贯支持的话。
答案 2 :(得分:1)
添加以下内容应该可以在IE中使用。
$(document).ready(function() {
$('input,select').keypress(function(event) { return event.keyCode != 13; });
});
&#13;