Javascript返回true或false以从另一个函数回调

时间:2017-01-26 03:36:16

标签: javascript jquery

我正在使用具有回调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;
    }
});

1 个答案:

答案 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;
        }
    });
});