我正在尝试拦截网页上特定表单的所有表单提交.使用jQuery看起来非常简单:form.submit(function(e){…})如果单击提交按钮它会很好用.
但是在select字段上还有一个onChange属性,它执行this.form.submit(),看起来这个调用绕过了我的监听器(在Chromium / Firefox中):
<script type="text/javascript"> function submitForm(e) { window.alert('submitted'); e.preventDefault(); return false; } $(document).ready(function() { $('#bar').submit(submitForm); }); </script> <form id="bar"> <select name="name" onChange="this.form.submit()"> <option>Foo</option> <option>Bar</option> </select> <br/> <input type="submit"/> </form>
显然在上面的代码中我可以将this.form.submit()更改为我的提交监听器的特定引用.然而,在我的真实应用程序中,它并不那么简单,所以我正在寻找不需要修改onChange属性的方法.
解决方法
调用form.submit()方法不会触发提交事件,就像调用例如设置文本框的值不会触发其更改事件.尝试通过jQuery触发提交事件:
<form id="bar"> <select name="name" onChange="$('#bar').submit();"> <option>Foo</option> <option>Bar</option> </select> <br/> <input type="submit"/> </form>
根据documentation,将触发表单上的默认提交操作,并将提交表单.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。