在 validateUsername 函数有机会完成服务器端的用户名检查之前,存在表单提交的问题。
如何仅在 validateUsername 函数完成后提交表单? 希望这是清楚的...
form.submit(function(){
if (validateUsername() & validateEmail() & validatePassword()) {
return true;
} else {
return false;
}
});
function validateUsername(){
usernameInfo.addClass("sign_up_drill");
usernameInfo.text("checking...");
var b = username.val();
var filter = /^[a-zA-Z0-9_]+$/;
$.post("../username_check.php",{su_username:username.val()},function(data) {
if (data=='yes') {
username.addClass("error");
usernameInfo.text("sorry, that one's taken");
usernameInfo.addClass("error");
return false;
} else if (!filter.test(b)) {
username.addClass("error");
usernameInfo.text("no funny characters please");
usernameInfo.addClass("error");
return false;
} else {
username.removeClass("error");
usernameInfo.text("ok");
usernameInfo.removeClass("error");
return true;
}
});
}
最佳答案
奥拉维尔回答的更详细版本 - AJAX 调用已发出,函数无需等待即可返回。
在您提交表单之前,回调不会完成。
您应该做的是让按钮/触发器调用 AJAX 验证,并且回调应该提交表单而不是返回 true。
关于jquery - 如何在提交表单之前等待ajax验证完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/866654/