jQuery验证 - submitHandler和AJAX响应

时间:2010-12-07 18:37:13

标签: jquery validation jquery-validate

我正在尝试对用户名可用性进行ajax检查,并仅在用户名可用时提交表单。

使用jQuery Validation插件,我设置了:

        submitHandler: function(form) {
        if (ajaxCheck() == true){
            alert('true');
        }
    }

我的用户名检查功能如下:

function ajaxCheck(){
usernameVal = $("#username").val().toLowerCase();
usernameVal = usernameVal.replace(/[\s\W]/g, '');
$.post("/app/signup/username/", {
username: usernameVal
}, function(response){
    if (response == "Username not available.") {
        $("#signup").validate().showErrors({ "username" : "Username Not Available." });
        alert('false');
        return false;
    } else {
        alert('true');
        return true;
    }
});

}

问题是它没有向submitHandler返回true或false。我不确定是不是因为return语句在$ .post内?

如果我独立运行ajaxCheck,它会根据可用性警告false和true,如果从submitHandler调用它,则不会返回false / true。

任何见解都表示赞赏。

3 个答案:

答案 0 :(得分:2)

你也可以使用远程选项,就像这样!

remote: {
    url: myUrl = location.protocol + "//" + location.host + '/trabajos/json.php?c=wrk&a=validMail',
    type: "post",
    data: {
        correo: function() {
                return $("#subtrabajo_correo").val();
            }
        }
}

答案 1 :(得分:1)

Novon,

您可以在ajax成功中设置变量,但据我所知,您无法从ajax返回值。

它是一个异步调用,所以保持一个全局变量将你的检查逻辑移动到succuess。

您无法进行ajax调用并获取返回值,如方法

答案 2 :(得分:0)

太棒了,现在正在使用:

$.validator.addMethod("usercheck", function(value, element) {
        ajaxCheck();
        return validName;
}, "Username not available!");

并设置变量“validName”而不是在ajaxCheck()中返回true / false;