如何等待AJAX​​验证,提交表单前完成? [英] How to wait for ajax validation to complete before submitting a form?

查看:202
本文介绍了如何等待AJAX​​验证,提交表单前完成?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有一个问题,其中的形式提交之前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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆