我正在尝试对用户名可用性进行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。
任何见解都表示赞赏。
答案 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;