当javascript在元素上调用提交时,jQuery覆盖表单提交不起作用

use*_*624 34 javascript jquery

我有一个带有正常表单的页面,带有一个提交按钮和一些jQuery,它绑定到表单提交事件并覆盖它e.preventDefault()并运行一个AJAX命令.单击提交按钮但单击链接时,此工作正常onclick='document.formName.submit();',AJAX表单提交事件处理程序不会捕获该事件.任何想法为什么不能或如何在不绑定所有元素的情况下使其工作?

ste*_*chz 35

一些建议:

  • 覆盖提交功能以进行恶意出价

    var oldSubmit = form.submit;
    form.submit = function() {
        $(form).trigger("submit");
        oldSubmit.call(form, arguments);
    }
Run Code Online (Sandbox Code Playgroud)
  • 为什么不绑定到所有<a>标签?然后你不必做任何猴子修补,它可以像(假设所有链接都在form标签内)一样简单:

    $("form a").click(function() {
        $(this).parents().filter("form").trigger("submit");
    });
Run Code Online (Sandbox Code Playgroud)

  • 第一个例子中"形式"代表什么? (2认同)

Era*_*rin 11

如果您使用的是jQuery,则应该通过它自己的事件机制附加事件,而不是使用"on"属性(onclick等).它还有自己的事件触发方法,恰当地命名为' trigger ',您应该使用它来激活表单提交事件.