javascript验证表单后却无法异步检测用户名?求高手帮忙解答,谢谢
沪-小坏 2012-07-11 03:48:37 验证表单的功能实现后却无法实现用ajax异步检测用户名,我想问题是不是出在下面代码中的红色部分,我只是猜测,但究竟是哪里的问题,我真的不知道,求高手帮忙了,谢谢!
以下是我的js代码:
<script language="javascript" src="jquery.min.js" type="text/javascript"></script>
//获取下一个span,可以通过这个对象给状态
function gspan(cobj){
while(true){
if(cobj.nextSibling.nodeName!="SPAN")
cobj=cobj.nextSibling;
else
return cobj.nextSibling;
}
}
/*
通用检查方法
第一个参数:obj 是用来检查的对象
第二个参数:info 是用来检查的提示信息
第三个参数:fun 是一个回调函数,用来检查值是否按条件输入
第四个参数:click 只是一个状态,用来区分是单击提交按钮还是失去焦点
*/
function check(obj,info,fun,click){
var sp=gspan(obj);
obj.onfocus=function(){
sp.innerHTML=info;
sp.className="stats2";
}
obj.onblur=function(){
if(fun(this.value)){
sp.innerHTML="输入正确";
sp.className="stats4";
}
else{
sp.innerHTML=info;
sp.className="stats3";
}
}
if(click=="click")
obj.onblur();
}
//页面加载完自动调用
onload=regs
//一个函数,可以使用onsubmit调用,也可以使用onload调用
function regs(click){
var stat=true;
var username=document.getElementsByName("username")[0];
var pwd=document.getElementsByName("pwd")[0];
var repwd=document.getElementsByName("repwd")[0];
var email=document.getElementsByName("email")[0];
check(username,"用户名的长度在3-20个字符之间",function(val){
/*注意/^\S+$/中的S必须为大写才正确*/
if(val.match(/^\S+$/) && val.length>=3 && val.length<=20){
$.get("01.aspx",username.value,
//发送GET请求
function(data){
$("#stats1").html(decodeURI(data));
});
document.getElementById('stats1').innerHTML ="<img src='loading.gif'>正在数据处理中...";
return true;
} else{
stat=false;
return false;
}
},click);
check(pwd,"密码必须在6-20位之间",function(val){
if(val.match(/^\S+$/) && val.length>=6 && val.length<=20){
return true;
}
else{
stat=false;
return false;
}
},click);
check(repwd,"确认密码必须在6-20位之间且必须和密码一致",function(val){
if(val.match(/^\S+$/) && val.length>=6 && val.length<=20 && val==pwd.value){
return true;
}
else{
stat=false;
return false;
}
},click);
check(email,"请输入有效的电子邮箱",function(val){
if(val.match(/^[\w]{1}[\w\.\-_]*@[\w]{1}[\w\-_\.]*\.[\w]{2,4}$/i)){
return true;
}
else{
stat=false;
return false;
}
},click);
return stat;
}
以下是html部分:
<form name="form1" runat="server" method="get" action="register.aspx" onsubmit="return regs('click');">
username:<input type="text" name="username" id="username" style="width:150px" /><span class="stats1" id="stats1">请输入用户名</span><br />
password:<input type="password" name="pwd" style="width:150px" /><span class="stats1">请输入6-20位密码</span><br />
repaswrd:<input type="password" name="repwd" style="width:150px" /><span class="stats1">请输入确认密码</span><br />
email:<input type="text" name="email" style="width:150px" /><span class="stats1">请输入邮箱</span><br />
<input type="submit" name="sub" value="register"/>