/*得到最近的SPAN标签*/
function getspan(cobj){
  
while(
true){
    
if(cobj.nextSibling.nodeName!=
"SPAN")
        cobj=cobj.nextSibling;
      
else
        
return cobj.nextSibling;
  }
}
/*
  通用的检测函数
  obj:检测的对象
  error:检查出错的信息
  fun:回调函数,检测输入的值是否符合规则
  click:状态,判断是点击提交按钮 还是失去焦点
*/
function check(obj,error,fun,click){
  
var sp=getspan(obj);
  obj.οnfοcus=
function(){
    sp.innerHTML=error;
    sp.className=
"stat2";
  }
  obj.οnblur=
function(){
    
if(fun(
this.value)){
      sp.innerHTML=
"OK!";
      sp.className=
"stat4";
    }
else{
      sp.innerHTML=error;
      sp.className=
"stat3";
    }
  }
  
if(click==
"click")
    obj.onblur();
}
/*加载页面调用*/
function regs(click){
  
var stat=
true;
  
var username=document.getElementsByName(
"username")[0];
  
var password=document.getElementsByName(
"password")[0];
  
var repass=document.getElementsByName(
"repass")[0];
  
var email=document.getElementsByName(
"email")[0];
  check(username,
"用户名长度必须在6-15位之间",
function(val){
    
if(val.match(/^\S+$/) && val.length>=6 && val.length<=15){
      
return
true;
    }
else{
      stat=
false;
      
return
false;
    }
  },click);
  check(password,
"密码长度必须在6-10位之间",
function(val){
    
if(val.match(/^\S+$/) && val.length>=6 && val.length<=10){
      
return
true;
    }
else{
      stat=
false;
      
return
false;
    }
  },click);
  check(repass,
"必须和上面的相同,并且规则也一样",
function(val){
    
if(val.match(/^\S+$/) && val.length>=6 && val.length<=10 && val==password.value){
      
return
true;
    }
else{
      stat=
false;
      
return
false;
    }
  },click);
  check(email,
"邮箱格式不对",
function(val){
    
if(val.match(/\w+@\w+\.\w/)){
      
return
true;
    }
else{
      stat=
false;
      
return
false;
    }
  },click);
  
return stat;
}
 
 
<
html
>
<
head
>
<
script
src
="check.js"
>
</script>
<
style
>
  .stat1{
    color:#aaa;
  }
  .stat2{
    color:#000;
  }
  .stat3{
    color:red;
  }
  .stat4{
    color:green;
  }
</style>
</head>
<
body
>
<
form
action
="reg.php"
method
="post"
onsubmit
="return regs('click');"
>
    username:
<
input
type
="text"
name
="username" value=""
>
    
<
span
class
="stat1"
>
</span>
<
br
>
    password:
<
input
type
="text"
name
="password" value=""
>
    
<
span
class
="stat1"
>
</span>
<
br
>
    repass:
<
input
type
="text"
name
="repass" value=""
>
    
<
span
class
="stat1"
>
</span>
<
br
>
    email:
<
input
type
="text"
name
="email" value=""
>
    
<
span
class
="stat1"
>
</span>
<
br
>
    submit:
<
input
type
="submit"
name
="sub"
value
="submit"
>
</form>
</body>
</html>