jquery – 如何拦截表格可靠地提交?

前端之家收集整理的这篇文章主要介绍了jquery – 如何拦截表格可靠地提交?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试拦截网页上特定表单的所有表单提交.使用jQuery看起来非常简单:form.submit(function(e){…})如果单击提交按钮它会很好用.

但是在select字段上还有一个onChange属性,它执行this.form.submit(),看起来这个调用绕过了我的监听器(在Chromium / Firefox中):

  1. <script type="text/javascript">
  2. function submitForm(e) {
  3. window.alert('submitted');
  4. e.preventDefault();
  5. return false;
  6. }
  7.  
  8. $(document).ready(function() {
  9. $('#bar').submit(submitForm);
  10. });
  11. </script>
  12.  
  13. <form id="bar">
  14. <select name="name" onChange="this.form.submit()">
  15. <option>Foo</option>
  16. <option>Bar</option>
  17. </select>
  18. <br/>
  19. <input type="submit"/>
  20. </form>

显然在上面的代码中我可以将this.form.submit()更改为我的提交监听器的特定引用.然而,在我的真实应用程序中,它并不那么简单,所以我正在寻找不需要修改onChange属性方法.

如果我没有做一个愚蠢的错误,但这实际上是预期的浏览器行为,如果你能解释事件流程以及为什么会导致上述症状,我会很高兴.

解决方法

调用form.submit()方法不会触发提交事件,就像调用例如设置文本框的值不会触发其更改事件.尝试通过jQuery触发提交事件:
  1. <form id="bar">
  2. <select name="name" onChange="$('#bar').submit();">
  3. <option>Foo</option>
  4. <option>Bar</option>
  5. </select>
  6. <br/>
  7. <input type="submit"/>
  8. </form>

根据documentation,将触发表单上的默认提交操作,并将提交表单.

猜你在找的jQuery相关文章