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"); });