监听所有表单提交事件

3
jQuery的on('submit', ...)可以正确地捕获原生表单提交,即当提交按钮被按下时,但它与JS表单提交不兼容,至少在FF和IE上如此。考虑到这一点,如何才能“正确地”添加提交监听器呢?通过改变HTMLFormElement.prototype.submit的行为来修改DOM原型在IE7上无效。你可以查看这个示例

2
原生的js .submit() 不会触发 onsubmit 处理程序,这是有很好的原因的 - 因为你可能(并且经常)会非常容易地形成一个无限递归的提交处理程序。如果需要从js运行表单处理程序,则可以使用例如 $("#myform").trigger('submit') - Beetroot-Beetroot
@Beetroot-Beetroot:哦,既然你提到了,那就很明显了 :) 谢谢,这很有道理。 - Oleg
根据您想要做什么,有时可以捕获 window.onpageunload 来进行一些基本的清理工作。 - Jeremy J Starcher
@JeremyJStarcher:我正在尝试在提交之前向表单添加一些数据 - onpageunload 不能很好地工作,其跨浏览器支持也有点古怪。 - Oleg
1个回答

0
使用jQuery的.submit()来提交表单将解决这个问题。
$('#someForm').submit();

jsFiddle演示

当然,如果你坚持使用原生DOM的.submit(),这并不会有太大帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接