一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

五款js身份证验证代码

时间:2010-09-16 编辑:简简单单 来源:一聚教程网


 
 
 
 

方法二

js身份证号码验证函数 支持带x的号码
//--身份证号码验证-支持新的带x身份证
functionisidcardno(num)
{
varfactorarr=newarray(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
varerror;
varvararray=newarray();
varintvalue;
varlngproduct=0;
varintcheckdigit;
varintstrlen=num.length;
varidnumber=num;
//initialize
if((intstrlen!=15)&&(intstrlen!=18)){
//error="输入身份证号码长度不对!";
//alert(error);
//frmadduser.txtidcard.focus();
returnfalse;
}
//checkandsetvalue
for(i=0;i vararray[i]=idnumber.charat(i);
if((vararray[i]<'0'||vararray[i]>'9')&&(i!=17)){
//error="错误的身份证号码!.";
//alert(error);
//frmadduser.txtidcard.focus();
returnfalse;
}elseif(i<17){
vararray[i]=vararray[i]*factorarr[i];
}
}
if(intstrlen==18){
//checkdate
vardate8=idnumber.substring(6,14);
if(checkdate(date8)==false){
//error="身份证中日期信息不正确!.";
//alert(error);
returnfalse;
}
//calculatethesumoftheproducts
for(i=0;i<17;i++){
lngproduct=lngproduct+vararray[i];
}
//calculatethecheckdigit
intcheckdigit=12-lngproduct%11;
switch(intcheckdigit){
case10:
intcheckdigit='x';
break;
case11:
intcheckdigit=0;
break;
case12:
intcheckdigit=1;
break;
}
//checklastdigit
if(vararray[17].touppercase()!=intcheckdigit){
//error="身份证效验位错误!...正确为:"+intcheckdigit+".";
//alert(error);
returnfalse;
}
}
else{//lengthis15
//checkdate
vardate6=idnumber.substring(6,12);
if(checkdate(date6)==false){
//alert("身份证日期信息有误!.");
returnfalse;
}
}
//alert("correct.");
returntrue;
}

 

 
验证三

 

function check(){
     //alert(event.keycode);
     if(event.keycode == 13){
      checkid();
     }
    }
    function checkid(id){
      var idnum = id;
      //alert(idnum);
      var errors=new array(
       "验证通过",
       "身份证号码位数不对",
       "身份证含有非法字符",
       "身份证号码校验错误",
       "身份证地区非法"
      );
         //身份号码位数及格式检验
         var re;
         var len = idnum.length;
         //身份证位数检验
         if(len != 15 && len != 18){
       return errors[1];
            }else if(len == 15){
             re = new regexp(/^(d{6})()?(d{2})(d{2})(d{2})(d{3})$/);
            }else{
             re = new regexp(/^(d{6})()?(d{4})(d{2})(d{2})(d{3})([0-9xx])$/);
            }

      var area={11:"北京",12:"天津",13:"河北",14:"山西",
       15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",
       32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",
       37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",
       45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",
       53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",
       64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",
       91:"国外"}

        var idcard_array = new array();
        idcard_array = idnum.split("");
     
        //地区检验
        if(area[parseint(idnum.substr(0,2))]==null) {
         return errors[4];
        }
     
   
       
          //出生日期正确性检验
          var a = idnum.match(re);
       
          if (a != null){
            if (len==15){
              var dd = new date("19"+a[3]+"/"+a[4]+"/"+a[5]);
              var flag = dd.getyear()==a[3]&&(dd.getmonth()+1)==a[4]&&dd.getdate()==a[5];
            }
            else if(len == 18){
              var dd = new date(a[3]+"/"+a[4]+"/"+a[5]);
              var flag = dd.getfullyear()==a[3]&&(dd.getmonth()+1)==a[4]&&dd.getdate()==a[5];
            }
       
            if (!flag) {
             return "身份证出生日期不对!";
            }                    
         
            //检验校验位
            if(len == 18){
              s = (parseint(idcard_array[0]) + parseint(idcard_array[10])) * 7
              + (parseint(idcard_array[1]) + parseint(idcard_array[11])) * 9
              + (parseint(idcard_array[2]) + parseint(idcard_array[12])) * 10
              + (parseint(idcard_array[3]) + parseint(idcard_array[13])) * 5
              + (parseint(idcard_array[4]) + parseint(idcard_array[14])) * 8
              + (parseint(idcard_array[5]) + parseint(idcard_array[15])) * 4
              + (parseint(idcard_array[6]) + parseint(idcard_array[16])) * 2
              + parseint(idcard_array[7]) * 1
              + parseint(idcard_array[8]) * 6
              + parseint(idcard_array[9]) * 3 ;
           
              y = s % 11;
              m = "f";
              jym = "10x98765432";
              m = jym.substr(y,1);//判断校验位
           
              //检测id的校验位
              if(m == idcard_array[17]){
               return "";
              }
              else{
               return errors[3];
              }
       }
        
          }else{
            return errors[2];
          }
          return "";
}

js身份证验证五

....


 
 



  
  


  
  

身份证号:

 

出生日期:
年龄:
  

....

**

*javascript部分

***

function isidcardno(num)
{
    var factorarr = new array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
    var error;
    var vararray = new array();
    var intvalue;
    var lngproduct = 0;
    var intcheckdigit;
    var intstrlen = num.length;
    var idnumber = num;  
    // 开始测试

    if(idnumber!=""){
        if ((intstrlen != 18)) {
            error = "输入身份证号码长度不对!";
            alert(error);
            document.getelementbyidx("emp_idcardno").focus();
            return false;
        }   
       
        for(i=0;i             vararray[i] = idnumber.charat(i);
            if ((vararray[i] < '0' || vararray[i] > '9') && (i != 17)) {
                error = "错误的身份证号码!.";
                alert(error);
                document.getelementbyidx("emp_idcardno").focus();
                return false;
            } else if (i < 17) {
                vararray[i] = vararray[i]*factorarr[i];
            }
        }
        if (intstrlen == 18) {
            //取出身份证上的日期

            var date8 = idnumber.substring(6,14);               
            if (checkdate(date8) == false) {
                error = "身份证中日期信息不正确!.";
                alert(error);
                document.getelementbyidx("emp_idcardno").focus();
                return false;
            }
            // 累积和
            for(i=0;i<17;i++) {
                lngproduct = lngproduct + vararray[i];
            }      
            // 计算出后一位数

            intcheckdigit = 12 - lngproduct % 11;
            switch (intcheckdigit) {
                case 10:
                    intcheckdigit = 'x';
                    break;
                case 11:
                    intcheckdigit = 0;
                    break;
                case 12:
                    intcheckdigit = 1;
                    break;
            }      
            // 判断所传身份证最后一位是否正确

            if (vararray[17].touppercase() != intcheckdigit) {
                error = "身份证效验位错误!";
                alert(error);
               document.getelementbyidx("emp_idcardno").focus();
                return false;
            }else{
                var cyear=date8.substring(0,4);
                var cmonth=date8.substring(4,6);
                var cdate=date8.substring(6,8);
                var nobir=cyear+"-"+cmonth+"-"+cdate;
                if(cheackdate_js(nobir)){
                document.getelementbyidx("emp_birthday").value=cyear+"-"+cmonth+"-"+cdate;
                var now=new date();
                document.getelementbyidx("emp_age").value=""+(now.getyear()-cyear);
                      return true;
            }else{
                error = "错误的身份证号码";
                alert(error);
               document.getelementbyidx("emp_idcardno").focus();
                }
            }     
        }
        else{
            var date6 = idnumber.substring(6,12);
            if (checkdate(date6) == false) {
                alert("身份证日期信息有误!.");
               document.getelementbyidx("emp_idcardno").focus();
                return false;
            }
            return true
        }}
    return true;
}

*

*判断日期格式是否符合不超过今天的yyyy-mm-dd

*

function cheackdate_js(dates){
 var nowdates=new date();
 var nowdate=nowdates.getyear();
 var nowdatem=nowdates.getmonth()+1;
 var nowdated=nowdates.getdate();
 var nowdate0=nowdates.getyear()-100;
if(dates!=""){
 if(dates.isdate()){
 var d=dates.split("-");
 var newdate;
 var newdatem;
 var newdated;
   if(d!=null){

   var newdate=d[0];
   var newdatem=d[1];
   var newdated=d[2];
   }

     if(newdate>nowdate||newdate    //alert("输入的日期无效!");
   return false;
   }if(newdate==nowdate){
       if(newdatem>nowdatem){
    //alert("输入的日期无效!");
    return false;
    }
  
   if(newdatem==nowdatem){
    if(newdated>nowdated){
    //alert("输入的日期无效!");
    return false;
   }
   }if(newdate                  return true;  
                 }
   }
    return true;  
  
}else{
//alert("输入的日期错误 不符合yyyy-mm-dd格式!提示:(1988-02-06 或者 1988-12-06)");
return false;
     }

}

}

热门栏目