如何等待AJAX验证,提交表单前完成? [英] How to wait for ajax validation to complete before submitting a form?
问题描述
有一个问题,其中的形式提交之前validateUsername功能有机会完成对服务器侧的用户名检查
我如何提交表单的validateUsername功能完成后,才? 希望这是明确的......
form.submit(函数(){
如果(validateUsername()及validateEmail()及validatePassword()){
返回true;
} 其他 {
返回false;
}
});
传播validateUsername(){
usernameInfo.addClass(sign_up_drill);
usernameInfo.text(检查......);
变种B = username.val();
VAR过滤器= / ^ [A-ZA-Z0-9 _] + $ /;
$。员额(../ username_check.php,{su_username:username.val()},功能(数据){
如果(数据=='是'){
username.addClass(错误);
usernameInfo.text(对不起,一个人的采取);
usernameInfo.addClass(错误);
返回false;
}否则如果(!filter.test(b))的{
username.addClass(错误);
usernameInfo.text(不奇怪的字符,请);
usernameInfo.addClass(错误);
返回false;
} 其他 {
username.removeClass(错误);
usernameInfo.text(正常);
usernameInfo.removeClass(错误);
返回true;
}
});
}
的奥拉维尔的回答更详细的版本 - 的AJAX调用时,没有等待函数返回
回调没有完成,直到您提交表单。
你应该做的是有按钮/触发器调用AJAX验证,并且回调应提交返回true的形式代替。
Having a problem where the form submits before the validateUsername function has a chance to complete the username check on the server-side.
How do I submit the form only after the validateUsername function completes? Hope this is clear...
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;
}
});
}
More verbose version of Olafur's answer - The AJAX call is made and the function returns without waiting.
The callback doesn't finish until you've submitted the form.
What you should do is have the button/trigger calling the AJAX validation, and the callback should submit the form instead of returning true.
这篇关于如何等待AJAX验证,提交表单前完成?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!