更新 来自@BrendanEich
提交的@mplungjan onclick就是一个按钮;表格onsubmit显然更好。
使用提交按钮的onclick确定是否应该提交表单的原因是什么?
我强烈相信
我正在寻找有理由倾向于在表单的onsubmit上使用提交按钮的onclick事件。
更新:请注意,我个人非常了解表单提交和验证方面的许多问题 例如,通过javascript提交不会触发onsubmit http://jsfiddle.net/mplungjan/3A4Ha/
<form onsubmit="alert('onSubmit called')">
<input type="text" value="This will submit on enter but in IE the onclick is not triggered" style="width:100%"/><br/>
<input type="submit" onclick="alert('Clicked')" />
</form><br />
<a href="#" onclick="alert('Submitting by script'); return false">Submit by script will not trigger onsubmit</a>
如果你在我的小提琴中点击输入
,IE也不会触发onclick历史:
在这里讨论
html button not clickable without being disabled
由于很多 1 多年来看到这在多个浏览器中无效,我非常不喜欢使用提交按钮的onclick, IE的版本。 我列举了一些显而易见的原因,但我相信他们不会说服强硬的用户。
SO的社区可以帮我把这个钉在墙上,就像钉在学校里一样吗? 也可以随意评论如何以可接受的方式表达这个问题。
1:自NS2.x和IE3.02以来
答案 0 :(得分:13)
表单onsubmit是一种更正确的方法,原因很简单,表格也可以使用<ENTER>
键提交,而不仅仅是点击提交按钮。
答案 1 :(得分:0)
没有直接理由要在按钮的onclick处理程序上使用from的onsubmit处理程序。人们应该根据意图使用命名事件。
您可以考虑一个场景,该场景有两个动作–一个“发送”动作(如“发送电子邮件”)和一个“保存”(如“草稿”)。前一个动作假定表单以连贯的方式填写,而后一个动作应允许用户保留用户喜欢的任何状态。这使单击处理程序成为确定验证和取消的理想场所。在这种情况下,尚不确定提交事件的相关性。
要使事情变得更加复杂,可以在方案中添加自动保存和乐观并发。
恕我直言,多年来在此事上的尝试和错误导致HTML5标准决定了该问题,而赞成使用button元素。查看按钮的[form *]属性,该属性允许每个按钮分别更改表单操作和方法。