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

时间:2020-03-06 14:48:33  来源:igfitidea点击:

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

解决方案

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

谢谢伊兰

我正在使用此事件绑定代码

this._form.bind('submit', Delegate.create(this, function(e) {
    e.preventDefault();
    this._searchFadeOut();
    this.__onFormSubmit.invoke(this, new ZD.Core.GenericEventArgs(this._dateField.attr('value')));
});

但HTML上有旧版的onclick代码,由于链接太多,我不希望更改它。

一些建议:

  • 覆盖提交功能以进行恶意竞标
var oldSubmit = form.submit;
    form.submit = function() {
        $(form).trigger("submit");
        oldSubmit.call(form, arguments);
    }
  • 为什么不绑定到所有<a>标签?然后,我们不必进行任何猴子修补,它可能很简单(假设所有链接都在form标记内):
$("form a").click(function() {
        $(this).parents().filter("form").trigger("submit");
    });