我正在使用JQuery通过ajax请求执行表单提交。我用
form.submit(function() {
if( success ) {
return true;
}
validate(); //proceeds to an ajax call
return false;
}
根据请求成功,我想继续进行表单提交或用户回调。因此,如果未定义用户回调,我将在表单验证成功时提交表单(来自我的验证函数)。
config = {
successCallback: function() {
success = true;
form.submit(); //does not work
}
};
validate = function() {
$.ajax(
...
success: function(data) {
//code logic
config.successCallback();
}
);
};
ajax成功回调将调用config.successCallback(),如果它从未被用户覆盖,它将继续正常表单提交。我尝试使用实例变量(成功)来确保'return true'将继续进行默认表单提交。
不幸的是,这不起作用。似乎阻止默认表单提交的'return false'语句将忽略任何进一步的提交调用,即使设置了实例变量也是如此。它只能在再次点击提交按钮后才能工作(这使得它可以工作两次)。
是否有任何解决方法。我希望在提供时都使用用户回调,但在没有时继续使用默认表单提交,因为我使用ajax函数来验证表单,所以ajax成功回调使事情变得复杂。
答案 0 :(得分:2)
确保success
在范围内,或者只是在成功回调中使用form[0].submit()
来提交DOM表单并绕过jQuery注册的处理程序(假设集合中只有一个DOM表单)。 / p>
后一种方法实际上是jQuery validate插件建议如何解决too much recursion的潜在问题。