//由于ajax异步的运行方式,在函数中很难向上层函数返回值,但在做登陆页面submit时二次校验以及返回所有校验的判断又是需要的,因而采取输入时校验异步,提交时校验同步
将async以参数的形式传递入函数既不影响输入时的用户体验,还实现了提交时校验的功能
<script type="text/javascript">
function changeImg(){
document.getElementById("checkImg").setAttribute("src","${pageContext.request.contextPath }/checkCode?"+(new Date()));
};
function checkUsername(isAsync){
var flag=false;
$.ajax({
type:"post",
url:"${pageContext.request.contextPath }/ajaxCheckUsername",
async:isAsync,
data:{"username":$("#username").val()},
dataType:"text",
success: function(data){
flag = !(data=="true");
if(data=="true"){
$("#failInfoDiv").html("用户名不存在");
$("#failInfoDiv").css("color","red");
}else{
$("#failInfoDiv").html(">");
$("#failInfoDiv").css("color","black");
}
}
});
return flag;
};
function checkUserCode(isAsync){
var flag = false;
$.ajax({
type:"post",
url:"${pageContext.request.contextPath }/ajaxCheckCode",
async:isAsync,
data:{"checkCode":$("#checkCode").val()},
dataType:"json",
success: function(data){
flag = data;
if(data){
$("#failInfoDiv").html(">");
$("#failInfoDiv").css("color","black");
}else{
$("#failInfoDiv").html("验证码不正确");
$("#failInfoDiv").css("color","red");
}
}
});
return flag;
};
$(function(){
//为用户名输入框绑定focusout事件校验用户名是否存在并激活
$("#username").focusout(function() {
checkUsername(true);
});
//为验证吗绑定时间校验验证码是否正确
$("#checkCode").focusout(function() {
checkUserCode(true);
});
$("#loginForm").submit(function(){
var flag = true;
if(!checkUsername(false)){
alert("用户名不存在");
flag=false;
}
if(!checkUserCode(false)){
alert("验证码不正确");
flag=false;
}
return flag;
});
});
</script>