javascript  验证类  (张艳冲的验证类)

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
  var flag=1;  //flag=1 为初始 flag=2 错误 flag=3  空没错  flag=4正确
//验证规则
var  rules={
       'zhang[user]':{'msgid':'user','rule':'isempty','empty':'用户名不能为空','require':true,'test':'length','min':3,'max':20,'msgerror':'长度必须在3到10个之间','msgpass':'输入正确'},
      'zhang[passwd]':{'msgid':'passwd','rule':'isempty','empty':'密码不能为空','require':true,'test':'length','min':6,'max':10,'msgerror':'密码必须在6位到10为之间','msgpass':'输入正确'},     
      'zhang[youxiang]':{'msgid':'youxiang','rule':'isempty','empty':'邮箱不能为空','require':true,'test':'email','msgerror':'请正确填写邮箱','msgpass':'输入正确'},
       'zhang[qq]':{'msgid':'qq','rule':'isempty','empty':'qq 不能为空','require':false,'test':'qq','msgerror':'请正确填写qq号','msgpass':'输入正确'},
       'zhang[phone]':{'msgid':'phone','rule':'isempty','empty':'手机不能为空','require':true,'test':'phone','msgerror':'请正确填写手机号','msgpass':'输入正确'},
       'zhang[url]':{'msgid':'url','rule':'isempty','empty':'网址不能为空','require':true,'test':'url','msgerror':'请正确填写url地址','msgpass':'输入正确'},
       'zhang[aiguo]':{'msgid':'aiguo','radio':true,'require':true,'msgerror':'单选框必须选一个','msgpass':'输入正确'},
       'zhang[aihao][]':{'msgid':'aihao','require':true,'checkbox':true,'min':1,'max':3,'msgerror':'复选框必须是1个到3个','msgpass':'输入正确'}
           };
//大家调用的失去焦点的方法
function gongBlur(rules){     
      $.each(rules,function(n,v){
                  if(v.require){
                       if (v.radio){
                            $("input[name='"+n+"']").bind('click',{id:n,obj:v},radioclick);   
                        }else if(v.checkbox){
                            $("input[name='"+n+"']").bind('click',{id:n,obj:v},checkboxclick);  
                        }else{
                            $("input[name='"+n+"']").bind('blur',{id:n,obj:v},isempty);   
                        }
                               
                                 
      })          
 }
 //默认点击提交没有失去焦点是出发是时间
 function  tijiaoSubmit(rules){
             $.each(rules,function(n,v){
                 if(v.require){
                           if (v.radio){
                                   radioclick({data:{id:n,obj:v}})   
                            }else if(v.checkbox){
                                checkboxclick({data:{id:n,obj:v}})
                              }else{
                                isempty({data:{id:n,obj:v}});   
                                            
                             
              })
     
       //表单下所有的input 失去焦点
     // $("form > input[name!='']").blur()
 }
//复选框的判断
function checkboxclick(e){
           var id =e.data.id;         
          var object=e.data.obj;
            var msgid=object.msgid;
           var msgPass=object.msgpass;    //验证正确的信息
            var min=object.min; var max=object.max;
           var msgError=object.msgerror; // 验证错误的信息
          var zhiLength=$("input[name='"+id+"']:checked").length;    
                 if(min!=undefined && max!=undefined){       
                                  if(zhiLength>(max-1)){  
                                        $("input[name='"+id+"']':not(:checked)").attr('disabled',true)
                                  }else{
                                        $("input[name='"+id+"']:not(:checked)").attr('disabled',false)
                                         
                         if(zhiLength<min || zhiLength>max){  
                                   pushError(msgid,msgError);   flag=2;
                         }else{                           
                                 pushError(msgid,msgPass);
                         }
            }else if(min!=undefined && max==undefined){
                      if(zhiLength<min){
                               pushError(msgid,msgError);  flag=2;
                     }else{
                             pushError(msgid,msgPass);
                     }
            }else if(min==undefined && max!=undefined){
                                if(zhiLength>(max-1)){  
                                        $("input[name='"+id+"']':not(:checked)").attr('disabled',true)
                                  }else{
                                        $("input[name='"+id+"']:not(:checked)").attr('disabled',false)
                                  }
                
                     if(zhiLength>max){
                               pushError(msgid,msgError);  flag=2;
                     }else{
                             pushError(msgid,msgPass);
                     }
            }else{
                
            }
    
}
 
 
// 单选按钮的判断
 function radioclick(e){ flag=1;
          var id =e.data.id;
          var object=e.data.obj;
           var msgid=object.msgid;
           var msgPass=object.msgpass;    //验证正确的信息
           var msgError=object.msgerror; // 验证错误的信息
          var zhi=$("input[name='"+id+"']:checked").length;    
          if(zhi==0){
               pushError(msgid,msgError); flag=2;
          }else{
              pushError(msgid,msgPass);
          }

    
 
  $(function(){
         gongBlur(rules);      
      
    })
   
   function  tijiao(){
       tijiaoSubmit(rules);
         alert(flag);
      if(flag==1){
          return true;
      }
         return false;
       
      
  //  判断为空的  
function zhang(){
    alert ('zhang');
    
}
  //验证方法
 function isempty(e){      
       var object=(e.data.obj);  //接收到的是个对象即每个要验证的数组对象
       var id=e.data.id;  //验证的name 名字
    var msgid=object.msgid;
        var msg=object.empty;  //判断为空的信息
       var test=object.test; //  不为空的验证规则
      var msgError=object.msgerror; // 验证错误的信息
      var msgPass=object.msgpass;    //验证正确的信息
       var zhi=$.trim( $("input[name='"+id+"']").val());    
      if(zhi==''){
          pushError(msgid,msg); flag=2;
       }else{
        clearError(msgid);
         
      if(zhi!='' ){  //object.require 或者 不需要判断空的情况下
          var testMethod=test+'check';     //其中id为验证的名字 zhi 为验证的值  msgError错误的信息  msgPass 正确的信息
           if(testMethod=='lengthcheck'){   //长度的特殊判断  
                 var min=object.min; var max=object.max;
                  window[testMethod](msgid,zhi,min,max,msgError,msgPass);                 
           }else{    
            window[testMethod](msgid,zhi,msgError,msgPass);
           }
      }              
   
 //长度的判断
 function lengthcheck(msgid,zhi,min,max,msgError,msgPass){
       var    zhiLength=strlen(zhi);                          flag=1;
            if(min!=undefined && max!=undefined){
                     if(zhiLength<min || zhiLength>max){
                               pushError(msgid,msgError);  flag=2;
                     }else{
                             pushError(msgid,msgPass);
                     }
            }else if(min!=undefined && max==undefined){
                      if(zhiLength<min){
                               pushError(msgid,msgError);  flag=2;
                     }else{
                             pushError(msgid,msgPass);
                     }
            }else if(min==undefined && max!=undefined){
                     if(zhiLength>max){
                               pushError(msgid,msgError);  flag=2;
                     }else{
                             pushError(msgid,msgPass);
                     }
            }else{
                  
            }
     
 }
 //字符串判断
 function strlen(str) {  
    var len = 0;  
    for (var i=0; i<str.length; i++) {  
        if (str.charCodeAt(i)>127 || str.charCodeAt(i)==94) {  
            len += 2;  
        } else {  
            len ++;  
        }  
    }  
    return len;  
}  
 
 // 各种验证规则
 //QQ 验证规则
function qqcheck(msgid,zhi,msgError,msgPass){  flag=1;
    var pattern = /^\d{4,11}$/g;
      if(!pattern.test(zhi)){
           pushError(msgid,msgError);  flag=2;
      }else{
          pushError(msgid,msgPass);
      }
      
}
//邮箱验证
function emailcheck(msgid,zhi,msgError,msgPass){  flag=1;
    var pattern = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/g;
      if(!pattern.test(zhi)){  
           pushError(msgid,msgError);  flag=2;
      }else{
          pushError(msgid,msgPass);
      }
    
}

//验证电话(手机号)
function phonecheck(msgid,zhi,msgError,msgPass){flag=1;
    var pattern = /^1\d{10}$/g;
    if(!pattern.test(zhi)){
           pushError(msgid,msgError);  flag=2;
      }else{
          pushError(msgid,msgPass);
      }
}
//网址验证规则
function urlcheck(msgid,zhi,msgError,msgPass){flag=1;
    var pattern = /^(http:\/\/|https:\/\/)?\w{1,}(\.[a-zA-Z0-9\-:;]{1,})+(\/[\w-\.\/:;=\?&%]*)*$/g;
    if(!pattern.test(zhi)){
           pushError(msgid,msgError);  flag=2;
      }else{
          pushError(msgid,msgPass);
      }
}
//银行账号验证规则
function accountnocheck(msgid,zhi,msgError,msgPass){flag=1;
    var pattern = /^\w{8,20}$/g;
    if(!pattern.test(zhi)){
           pushError(msgid,msgError);  flag=2;
      }else{
          pushError(msgid,msgPass);
      }
}


// 放入错误信息
function pushError(msgid,msg){    
    $("#"+msgid+"_msg").html(msg);
}
//清除信息
function  clearError(msgid){
       $("#"+msgid+"_msg").html('');
    
}


</script>
<form method="post" action="2.php" enctype="multipart/form-data" onsubmit="return tijiao();">
用户名: <input name="zhang[user]" type="text"  size="30" value="" /><span id="user_msg"></span><br/>    
密码   <input name="zhang[passwd]" type="text"  size="30" value="" /> <span id="passwd_msg"></span><br/>    
爱好 :  <input name="zhang[aihao][]" type="checkbox"  size="30" value="" />打篮球
        <input name="zhang[aihao][]" type="checkbox"  size="30" value="" />羽毛球
        <input name="zhang[aihao][]" type="checkbox"  size="30" value="" />评全球
        <input name="zhang[aihao][]" type="checkbox"  size="30" value="" />游泳
        <input name="zhang[aihao][]" type="checkbox"  size="30" value="" />跳舞
        <input name="zhang[aihao][]" type="checkbox"  size="30" value="" />唱歌<span id="aihao_msg"></span> <br>
 爱国否 : <input name="zhang[aiguo]" type="radio"  size="30" value="1" />爱国
         <input name="zhang[aiguo]" type="radio"  size="30" value="2" />不怎么爱国
          <input name="zhang[aiguo]" type="radio"  size="30" value="3" />不爱国<span id="aiguo_msg"></span><br>
邮箱:   <input name="zhang[youxiang]" type="text"  size="30" value="4" /><span id="youxiang_msg"></span><br/><br>
QQ  <input name="zhang[qq]" type="text"  size="30" value="" /><span id="qq_msg"></span><br/>    <br>
手机:  <input name="zhang[phone]" type="text"  size="30" value="" /><span id="phone_msg"></span><br/>    <br>
 网址:  <input name="zhang[url]" type="text"  size="30" value="" /><span id="url_msg"></span><br/>    <br>     
      <input name="" type="submit"  size="30"  value="提交" />
</form>

posted @ 2012-04-01 11:53  张三_zhangsan  阅读(183)  评论(0编辑  收藏  举报