提交表单时为什么单击按钮?

Ser*_*rov 10 html javascript browser forms

说,我有一个带有文本输入和提交按钮的表单.

如果表单中没有按钮,只需提交事件触发器,但如果至少有一个按钮没有类型属性或者没有type="submit",则也会单击它.

现在,当我在输入中输入内容然后按Enter键时,我看到触发了按钮单击和表单提交事件.

例:

<form>
  <input type="text" />
  <button onclick="alert('submitted');">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)

我想表单会自动在表单提交事件上单击该按钮.

我想知道这种行为的起源和原因?我提交表单时为什么需要单击按钮?

Flo*_*tre 9

从规格:

4.10.22.2隐式提交

如果用户代理支持让用户隐式提交表单(例如,在某些平台上按下"enter"键,而文本字段被聚焦则隐式提交表单),然后对默认按钮具有已定义激活的表单执行此操作行为必须使用户代理在该默认按钮上运行合成单击激活步骤.

6.3 [合成点击]激活

HTML中的某些元素具有激活行为,这意味着用户可以激活它们.这触发了一系列依赖于激活机制的事件,并且通常在点击事件中达到顶点,如下所述.

用户代理应允许用户手动触发具有激活行为的元素,例如使用键盘或语音输入或通过鼠标单击.当用户以非点击方式触发具有已定义激活行为的元素时,交互事件的默认操作必须是对元素执行合成点击激活步骤.

在此处查看完整脚本


因此,按下麦克风(带语音输入设备)Enter处理按键submit.您的浏览器应该像用户单击按钮以正确处理单击事件附加功能一样,并为不能使用鼠标的用户提高可访问性.