我正在使用具有回调submitHandler的jQuery validate插件。在该回调中,如果它返回false,则中止提交,如果返回true,则使用post方法提交。
$("#collection_form").validate({
submitHandler: function(form) {
pre_ajax_submit(function (pre_ajax_return) {
if (pre_ajax_return == 'non_ajax') {
//something
} else {
//other
}
});
}
});
所以我的问题是:我在回调pre_ajax_submit()
中有一个函数。如何在主回调中使函数返回true或false。我希望得到与此相同的结果:
$("#collection_form").validate({
submitHandler: function(form) {
return true;
}
});
答案 0 :(得分:0)
简单地颠倒执行顺序。 在AJAX前任务完成后验证表单:
pre_ajax_submit(function (pre_ajax_return) {
if (pre_ajax_return == 'non_ajax') {
//something
} else {
//other
}
$("#collection_form").validate({
submitHandler: function(form) {
return true;
}
});
});
我猜你的代码中可能还有很多其他事情发生。你应该考虑使用Promises:
var whenPreAJAXFinished = new Promise(function(resolve, reject){
pre_ajax_submit(function (pre_ajax_return) {
if (pre_ajax_return == 'non_ajax') {
//something
} else {
//other
}
resolve()
})
})
whenPreAJAXFinished.then(function(){
$("#collection_form").validate({
submitHandler: function(form) {
return true;
}
});
});