Skip to content
标签
欢迎扫码关注公众号

在文本框中回车时页面自动提交的问题

之前遇到过 【ASP.NET】在弹出的 iframe 页面的文本框中按回车会刷新 iframe 页面~ 的问题,后来发现是因为 画面上只有一个文本框 导致的。

今天遇到的有些不同,画面上有多个文本框,但是仍然自动提交了。

在这篇博客:HTML 防止 input 回车提交表单 中列举了更多的可以导致上述现象(自动提交页面)的情况。

  1. 默认情况下,单个输入框,无论按钮的 type="submit" 还是 type="button" 类型,回车即提交。

    这个类似于我之前遇到的情况,不过要补充一下,即使页面上没有按钮也会回车自动提交

  2. type="submit" 时,无论有几个 type="text" 输入框,回车均表示提交。( <button> 按钮默认的 typesubmit

    这次遇到的就是由于这种情况导致的。页面有一个 button 但是没有设置 type 属性,也就是默认作为 submit 按钮,导致了这次的问题。
    对策倒是很简单,将 type 显式指定为 button 就可以了。

  3. type="button" 时,且存在多个输入框,回车不提交。(button)

2025-09-10 追记

4.10.22.2 隐式提交(Implicit Submission)

一个<form>元素(详见表单元素)的默认按钮,是指在树顺序中,第一个以该<form>元素为表单所有者提交按钮

若用户代理(通常指浏览器)支持让用户隐式提交表单(例如,在某些平台上,当文本控件处于聚焦状态时,按下“回车”键即会隐式提交表单),则对于某一表单,若其默认按钮具备激活行为且未处于禁用状态,用户通过上述方式隐式提交表单时,用户代理必须在该默认按钮触发一个click事件

网络上存在部分页面,其可用性完全依赖于隐式提交表单的功能,因此强烈建议用户代理支持此特性。

若表单不存在提交按钮,则隐式提交机制必须执行以下步骤:

  1. 若表单包含一个以上阻止隐式提交的字段(详见阻止隐式提交的字段),则终止流程(不执行提交)。
  2. <form>元素(详见表单元素)本身出发,提交该<form>元素,同时将 用户参与度 设置为“激活状态”。

在前文所述场景中,某元素若满足以下条件,则属于“阻止表单隐式提交的字段”:该元素是一个<input>元素(详见输入元素),且其表单所有者为当前<form>元素(详见表单元素),同时其type属性处于以下任一状态: