首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么只有一个文本输入的表单在enter时提交,而有两个文本输入的表单不提交?

为什么只有一个文本输入的表单在enter时提交,而有两个文本输入的表单不提交?
EN

Stack Overflow用户
提问于 2013-07-23 04:42:11
回答 3查看 8.9K关注 0票数 21

我刚刚发现,只包含一个输入(不是隐藏的)的表单会在按Enter时自动提交。

但当按enter键时,包含至少两个输入(未隐藏)的表单将不会提交。

(所有脚本中都没有submit/button/inputtype=submit )

看看这个jsfidle。对此行为有没有一个解释/标准?

代码语言:javascript
运行
复制
<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>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-23 04:54:08

这种行为是在HTML2.0规范中引入的。有关更多详细信息,请参阅以下文章:

Form submission and the ENTER key?

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

来源:W3C Specs

票数 29
EN

Stack Overflow用户

发布于 2013-07-23 04:46:11

这是特定于浏览器的实现。。。IE的一些版本实际上在默认情况下并不这样做,但Firefox和其他一些浏览器认为适合做这样的假设:对于一个只有一个文本框的表单,用户(或页面设计者)总是希望表单从该字段提交到Enter上。

实际上,有很多次我不得不绕过这个问题进行编码。。。在我看来,这是最值得怀疑的浏览器设计决策之一。

编辑:

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

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

票数 4
EN

Stack Overflow用户

发布于 2014-11-24 16:03:17

添加以下应在IE中工作的内容。

代码语言:javascript
运行
复制
$(document).ready(function() { 
    $('input,select').keypress(function(event) { return event.keyCode != 13; }); 
  });

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17797025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档