为了账号安全,请及时绑定邮箱和手机立即绑定

jQuery的$(form).submit();应该吗?不在表单标签内触发onSubmit吗?

jQuery的$(form).submit();应该吗?不在表单标签内触发onSubmit吗?

摇曳的蔷薇 2019-09-26 10:28:46
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规范的这一部分。该事件仅在用户激活时触发,而在代码激活时不触发。

(强调)。

注意: “由用户激活”还包括单击提交按钮(可能包括回车键的默认提交行为,但我没有尝试过)。我相信,如果您(使用代码)单击提交按钮,也不会触发该事件。


查看完整回答
反对 回复 2019-09-26
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

我想在某些情况下希望这种行为是合理的,但是我认为不触发表单提交的代码应该(始终)是默认行为。假设您想通过以下方式捕获表单的提交

$("form").submit(function(e){
    e.preventDefault();});

然后对输入进行一些验证。如果代码可以触发提交处理程序,则您永远都不能包含

$("form").submit()

在此处理程序中,因为这将导致无限循环(将调用SAME处理程序,以防止提交,验证和重新提交)。您需要能够在提交处理程序中手动提交表单,而无需触发相同的处理程序。

我意识到这并不能直接回答问题,但是此页面上还有许多其他有关如何破解此功能的答案,我认为需要指出(而且评论太长了)。


查看完整回答
反对 回复 2019-09-26
  • 3 回答
  • 0 关注
  • 1316 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信