【问题标题】:Why does a FORM with one text INPUT submit on enter while one with two text INPUTs does not? [duplicate]为什么一个带有一个文本输入的表格在输入时提交,而一个带有两个文本输入的表格却没有? [复制]
【发布时间】:2013-07-21 17:53:55
【问题描述】:

我刚刚发现一个只包含一个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>

【问题讨论】:

  • 如果您将input type=submit 添加到第二个表单,它将提交。我正在寻找关于它的标准

标签: javascript html forms


【解决方案1】:

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

Form submission and the ENTER key?

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

来源:W3C Specs

【讨论】:

  • 我冒昧地在此处复制了规范的相关部分。好答案,点赞
  • 您的更新改进了答案 - 谢谢!
  • 这一定是WWW历史上最大的WTF之一。直到你找到规范并理解它为什么这样做。那就太好了xD
【解决方案2】:

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

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

编辑:

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-05-17
      • 2020-10-17
      • 1970-01-01
      • 2018-03-21
      • 2012-10-09
      • 1970-01-01
      • 1970-01-01
      • 2017-12-27
      • 1970-01-01
      相关资源
      最近更新 更多