我想用checkAll()来验证邮箱密码和验证码,但是每次运行的时候都只执行了checkEmail(),后面的函数就不执行了。求高手帮忙看下。还想要看更多的代码的话,告诉下我。function checkEmail() {
var email = $("#email").attr("value");
var reg = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/; //电子邮箱正则表达式
$("#checkEmail").html("");
if(email==''|| email!=""&&!reg.test(email)){
$("#checkEmail").html("<font color='red'>请输入正确的邮箱</font>");
return false;
}else{
$.ajax( {
type : "post",
url : "validateEmail.action",
dataType : "xml",
data : {
email : email
},
success : function(data) {
if ($(data).text() == "success") {
return true;
} else {
$("#checkEmail").html("<font color='red'>账号已存在</font>");
return false;
}
}
});
}
}
function checkPwd() {
alert("XXX");
var password = $("#password").attr("value");
$("#checkPwd").html("");
if(password==''|| password.length>20 || password.length<6){
$("#checkPwd").html("<font color='red'>密码必须由6-20个字符组成</font>");
return false;
}
else
return true;
}
function checkCode() {
var code = $("#code").attr("value");
$("#checkCode").html("");
$.ajax( {
type : "post",
url : "validateRandomNumber.action",
dataType : "xml",
data : {
code : code
},
success : function(data) {
if ($(data).text() == "success") {
return true;
} else {
$("#checkCode").html("<font color='red'>验证码错误</font>");
return false;
}
}
});
}
function checkAll(){
if(checkEmail()&&checkPwd()&&checkName()&&checkBirth()&&checkUname()&&checkDname()&&checkCode())
$("#registerForm").submit();
}
var email = $("#email").attr("value");
var reg = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/; //电子邮箱正则表达式
$("#checkEmail").html("");
if(email==''|| email!=""&&!reg.test(email)){
$("#checkEmail").html("<font color='red'>请输入正确的邮箱</font>");
return false;
}else{
$.ajax( {
type : "post",
url : "validateEmail.action",
dataType : "xml",
data : {
email : email
},
success : function(data) {
if ($(data).text() == "success") {
return true;
} else {
$("#checkEmail").html("<font color='red'>账号已存在</font>");
return false;
}
}
});
}
}
function checkPwd() {
alert("XXX");
var password = $("#password").attr("value");
$("#checkPwd").html("");
if(password==''|| password.length>20 || password.length<6){
$("#checkPwd").html("<font color='red'>密码必须由6-20个字符组成</font>");
return false;
}
else
return true;
}
function checkCode() {
var code = $("#code").attr("value");
$("#checkCode").html("");
$.ajax( {
type : "post",
url : "validateRandomNumber.action",
dataType : "xml",
data : {
code : code
},
success : function(data) {
if ($(data).text() == "success") {
return true;
} else {
$("#checkCode").html("<font color='red'>验证码错误</font>");
return false;
}
}
});
}
function checkAll(){
if(checkEmail()&&checkPwd()&&checkName()&&checkBirth()&&checkUname()&&checkDname()&&checkCode())
$("#registerForm").submit();
}
我刚才试过了,chechkEmail可以返回true的。
success : function(data) {
if ($(data).text() == "success") {
return true;
} else {
$("#checkEmail").html("<font color='red'>账号已存在</font>");
return false;
}
return true返回不到checkEmail(),直接返回在function(data)地方了。
type : "post",
async:false,
url : "validateEmail.action",
dataType : "xml",
data : {
email : email
},
修改为同步试下
还有你的checkEmail() 并没有返回值的
var methods = [];
function checkEmail() {
index++;
var email = $("#email").attr("value");
var reg = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/; //电子邮箱正则表达式
$("#checkEmail").html("");
if(email==''|| email!=""&&!reg.test(email)){
$("#checkEmail").html("<font color='red'>请输入正确的邮箱</font>");
return false;
}else{
$.ajax( {
type : "post",
url : "validateEmail.action",
dataType : "xml",
data : {
email : email
},
success : function(data) {
if ($(data).text() == "success") {
if(methods[index]){
methods[index]();
}
} else {
$("#checkEmail").html("<font color='red'>账号已存在</font>");
}
}
});
}
}
function checkPwd() {
index++;
var password = $("#password").attr("value");
$("#checkPwd").html("");
if(password==''|| password.length>20 || password.length<6){
$("#checkPwd").html("<font color='red'>密码必须由6-20个字符组成</font>");
}
else{
if(methods[index]){
methods[index]();
}
}
}
function checkCode() {
index++;
var code = $("#code").attr("value");
$("#checkCode").html("");
$.ajax( {
type : "post",
url : "validateRandomNumber.action",
dataType : "xml",
data : {
code : code
},
success : function(data) {
if ($(data).text() == "success") {
if(methods[index]){
methods[index]();
}
} else {
$("#checkCode").html("<font color='red'>验证码错误</font>");
}
}
});
}function submit(){
$("#registerForm").submit();
}methods = [checkEmail , checkPwd , checkCode , submit];
function checkAll(){
checkEmail();
}
还有,你上面的问题,success里的返回值为什么没有作为checkXXX的返回值, 原因是这样的,你code当中,对于JQuery中ajax的用法属于异步用法,并且success里的内容,仅为该验证操作异步执行,并成功获取结果后的回调函数,它与checkXXX本身并无关系,也就是说,checkXXX在执行到ajax部分时,并无等待success的结果,而是直接顺序执行下去,该方法就结束了。至于success是何时执行完毕的,与checkXXX压根没有关系。所以success里的返回值就不会作为checkXXX的返回值出现了。
不知道解释的是否清晰,还望谅解