我有一个带有正常表单的页面,其中包含一个提交按钮和一些jQuery,它绑定到表单提交事件并用e.preventDefault()
覆盖它并运行一个AJAX命令。单击提交按钮时可以正常工作,但单击onclick='document.formName.submit();'
的链接时,AJAX表单提交事件处理程序不会捕获该事件。任何想法为什么不能或如何在不绑定所有元素的情况下使其工作?
答案 0 :(得分:35)
一些建议:
var oldSubmit = form.submit;
form.submit = function() {
$(form).trigger("submit");
oldSubmit.call(form, arguments);
}
$("form a").click(function() {
$(this).parents().filter("form").trigger("submit");
});
答案 1 :(得分:11)
如果您使用的是jQuery,则应该通过它自己的event mechanism附加事件,而不是使用“on”属性(onclick等)。它还有自己的事件触发方法,恰当地命名为“trigger”,您应该使用它来激活表单提交事件。
答案 2 :(得分:1)
谢谢伊兰
我正在使用此事件绑定代码
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
代码,我不想更改它,因为链接太多了。
答案 3 :(得分:1)
这对我有用:
制作一个虚拟按钮,使用名称提交隐藏真实提交,
然后:
$("#mySubmit").click(function(){
$("#submit").trigger("click"); });
在您的虚拟对象上设置一个事件处理程序,以触发单击表单提交按钮。让浏览器弄清楚如何提交表单...这样你就不需要在表单提交上preventDefault
,这就是麻烦开始的地方。
这似乎解决了这个问题。