2016-06-13 54 views
9

说,我有一个文本输入和提交按钮的形式。为什么在提交表单时点击按钮?

如果表单中没有按钮,只需提交事件触发器,但如果至少有一个没有键入属性的按钮或type="submit",它也会点击它。

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

实施例:

<form> 
 
    <input type="text" /> 
 
    <button onclick="alert('submitted');">Submit</button> 
 
</form>

我想的形式自动地点击表格上的按钮提交事件。

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

+2

[点击事件按钮时触发提交表单时输入](http://stackoverflow.com/questions/11760030/click-event-on-button-is-trigged-when-submitting-a -form-with-enter) –

+3

这不是,我真的好奇原因,而不是如何解决这个问题。 –

+0

阅读答案的第二个评论。 –

回答

8

From the spec

4.10.22.2 Implicit submission

如果用户代理支持让用户提交表单暗示(例如,在某些平台上打,而文本字段的重点是隐含提交表单“回车”键),然后这样的形式其默认按钮具有已定义的激活行为必须使用户代理在该默认按钮上运行合成点击激活步骤。

6.3 [synthetic click] Activation

在HTML的某些元件具有活化行为,这意味着,用户可以激活它们。这会触发一系列依赖于激活机制的事件,并且通常会导致点击事件,如下所述。

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

See full script here


所以按Enter被处理为您的麦克风说submit(用语音输入设备)。您的浏览器应该像用户点击该按钮一样正确处理单击事件附加功能,并改善无法使用鼠标的人员的可访问性。

+0

@SergeiBasharov对你来说已经够清楚了还是你还有其他问题? –

-2

它实际上不会自动按下按钮,这不是提交表单的内容。表单正在提交,因为这是文本框的默认特征 - 如果您在文本框中有焦点,按回车键会导致尝试提交表单。 本文将进入一个更深层次的解释:https://www.tjvantoll.com/2013/01/01/enter-should-submit-forms-stop-messing-with-that/

编辑:只有 1)提交的形式存在按钮,或 2)形式:其实,更具体,形式将只能提交上的回车键,如果包含一个文本输入

如果这些条件都不是真的,那么回车键不应提交表单

相关问题