我刚刚发现,只包含一个输入(不是隐藏的)的表单会在按Enter时自动提交。
但当按enter键时,包含至少两个输入(未隐藏)的表单将不会提交。
(所有脚本中都没有submit/button/inputtype=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>发布于 2013-07-23 04:54:08
这种行为是在HTML2.0规范中引入的。有关更多详细信息,请参阅以下文章:
Form submission and the ENTER key?
当表单中只有一个单行文本输入字段时,用户代理应接受在该字段中输入作为提交表单的请求
来源:W3C Specs
发布于 2013-07-23 04:46:11
这是特定于浏览器的实现。。。IE的一些版本实际上在默认情况下并不这样做,但Firefox和其他一些浏览器认为适合做这样的假设:对于一个只有一个文本框的表单,用户(或页面设计者)总是希望表单从该字段提交到Enter上。
实际上,有很多次我不得不绕过这个问题进行编码。。。在我看来,这是最值得怀疑的浏览器设计决策之一。
编辑:
如果你感兴趣,你的问题还有更多细微差别的答案。。。显然,不同的浏览器(及其不同的版本)在这种特定情况下有不同的行为,包括它们是否提交,是否发生click事件,等等。如果您想阅读更多信息,我可以提供更多信息的链接。
但简短的答案是,它实际上是故意的,如果不是跨浏览器一致支持的话。
发布于 2014-11-24 16:03:17
添加以下应在IE中工作的内容。
$(document).ready(function() {
$('input,select').keypress(function(event) { return event.keyCode != 13; });
});
https://stackoverflow.com/questions/17797025
复制相似问题