jQuery的$(form).submit();应该吗?不在表单标签内触发onSubmit吗?我有以下内容:<script type="text/javascript">function CancelFormButton(button) {
$(button.form).submit();}</script><form onsubmit="alert('here');"><input type="button" value="Cancel" onClick="CancelFormButton(this);" /></form>当我单击“取消”按钮时,不会触发来自表单标签的onsubmit。该行将成功提交表单:$(button.form).submit();但是跳过alert('here');form标记中onsubmit中的。这是正确的还是我做错了什么?顺便说一句,在这种情况下,我需要此功能,但是我只是想知道是否在触发onsubmit的浏览器中遇到问题。
3 回答

互换的青春
TA贡献1797条经验 获得超6个赞
抱歉,误解了您的问题。
根据Javascript-在调用form.submit()时捕获onsubmit:
最近有人问我:“为什么使用JavaScript提交表单时,为什么不会触发form.onsubmit事件?”
答案:当前的浏览器不遵守html规范的这一部分。该事件仅在用户激活时触发,而在代码激活时不触发。
(强调)。
注意: “由用户激活”还包括单击提交按钮(可能包括回车键的默认提交行为,但我没有尝试过)。我相信,如果您(使用代码)单击提交按钮,也不会触发该事件。

明月笑刀无情
TA贡献1828条经验 获得超4个赞
我想在某些情况下希望这种行为是合理的,但是我认为不触发表单提交的代码应该(始终)是默认行为。假设您想通过以下方式捕获表单的提交
$("form").submit(function(e){ e.preventDefault();});
然后对输入进行一些验证。如果代码可以触发提交处理程序,则您永远都不能包含
$("form").submit()
在此处理程序中,因为这将导致无限循环(将调用SAME处理程序,以防止提交,验证和重新提交)。您需要能够在提交处理程序中手动提交表单,而无需触发相同的处理程序。
我意识到这并不能直接回答问题,但是此页面上还有许多其他有关如何破解此功能的答案,我认为需要指出(而且评论太长了)。
- 3 回答
- 0 关注
- 1316 浏览
相关问题推荐
添加回答
举报
0/150
提交
取消