validate.chkMailExist = function(){
var email = $.trim($('#email').val());
//$('#chkMail').attr('disabled','disabled');
$.ajax({
url : '/reg/chkMailExist.php',
type : 'get',
data : {'email':email},
dataType : 'JSON',
async : false,
success : function(data){
var obj = eval('(' + data + ')');
if(typeof obj != 'object') return;
if(obj.status == 1){
$('#email').parents('td').next('td').find('.err').html('该email可以用于注册').css('color','green');
$('#chkMail').attr('disabled','');
return true
}else{
$('#email').parents('td').next('td').find('.err').html('该email已经被用于注册').css('color','red');
$('#chkMail').attr('disabled','');
return false
}
}
})
alert('step2');
}
$('#email').blur(function(){validate.chkMailExist()})按照正常流程,这个是采用了ajax请求的同步方式,(async=false)。程序会等待ajax请求完成,然后通过回调函数跳出,不会往下执行(alert('step2')).但是实际情况是,程序执行到了alert('step2').这是因为什么呢?求详细解释,多谢!!
var email = $.trim($('#email').val());
//$('#chkMail').attr('disabled','disabled');
$.ajax({
url : '/reg/chkMailExist.php',
type : 'get',
data : {'email':email},
dataType : 'JSON',
async : false,
success : function(data){
var obj = eval('(' + data + ')');
if(typeof obj != 'object') return;
if(obj.status == 1){
$('#email').parents('td').next('td').find('.err').html('该email可以用于注册').css('color','green');
$('#chkMail').attr('disabled','');
return true
}else{
$('#email').parents('td').next('td').find('.err').html('该email已经被用于注册').css('color','red');
$('#chkMail').attr('disabled','');
return false
}
}
})
alert('step2');
}
$('#email').blur(function(){validate.chkMailExist()})按照正常流程,这个是采用了ajax请求的同步方式,(async=false)。程序会等待ajax请求完成,然后通过回调函数跳出,不会往下执行(alert('step2')).但是实际情况是,程序执行到了alert('step2').这是因为什么呢?求详细解释,多谢!!
var obj = eval('(' + data + ')');
if(typeof obj != 'object') return;
if(obj.status == 1){
$('#email').parents('td').next('td').find('.err').html('该email可以用于注册').css('color','green');
$('#chkMail').attr('disabled','');
return true
}else{
$('#email').parents('td').next('td').find('.err').html('该email已经被用于注册').css('color','red');
$('#chkMail').attr('disabled','');
return false
}
}你的return,只跳出了这个函数!
不会跳到函数
validate.chkMailExist = function(){
外面! 当然要执行了!
,这个明白了。当时晕菜了。再请教一个问题if(!validate.checkMailExist()) return false;
if(!validate.checkName()) return false;
if(!validate.checkPwd()) return false;
if(!validate.checkConPwd()) return false;
if(!validate.checkRnd()) return false;
其中validate.checkMailExist()利用了一个ajax的同步请求,奇怪的是后面的函数都得不到执行,这是为什么?多谢!
肯定会执行下面的代码!你可以用firebug 调试一下