今天图老师小编要向大家分享个Javascript代码:校验身份证号程序教程,过程简单易学,相信聪明的你一定能轻松get!
【 tulaoshi.com - Web开发 】
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)
1、15位身份证号码组成:ddddddyymmddxxs共15位,其中:dddddd为6位的地方代码,根据这6位可以获得该身份证号所在地。yy为2位的年份代码,是身份证持有人的出身年份。mm为2位的月份代码,是身份证持有人的出身月份。dd为2位的日期代码,是身份证持有人的出身日。这6位在一起组成了身份证持有人的出生日期。xx为2位的顺序码,这个是随机数。s为1位的性别代码,奇数代表男性,偶数代表女性。2、18位身份证号码组成:ddddddyyyymmddxxsp共18位,其中:其他部分都和15位的相同。年份代码由原来的2位升级到4位。最后一位为校验位。校验规则是:
(1)十七位数字本体码加权求和公式 
S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位数字的权求和 
Ai:表示第i位置上的身份证号码数字值 
Wi:表示第i位置上的加权因子 
Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 
(2)计算模 
Y = mod(S, 11) 
(3)通过模得到对应的校验码 
Y: 0 1 2 3 4 5 6 7 8 9 10 
校验码: 1 0 X 9 8 7 6 5 4 3 2
也就是说,如果得到余数为1则最后的校验位p应该为对应的0.如果校验位不是,则该身份证号码不正确。以下为js版本的校验实例。
Js代码 
script language="javascript"    
     !--    
    var powers=new Array("7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2");    
    var parityBit=new Array("1","0","X","9","8","7","6","5","4","3","2");    
    var sex="male";    
    //校验身份证号码的主调用    
   
    function validId(obj){    
        var _id=obj.value;    
        if(_id=="")return;    
        var _valid=false;    
        if(_id.length==15){    
             _valid=validId15(_id);    
         }else if(_id.length==18){    
             _valid=validId18(_id);    
         }    
        if(!_valid){    
             alert("身份证号码有误,请检查!");    
             obj.focus();    
            return;    
         }    
        //设置性别    
   
        var sexSel=document.getElementById("sex");    
        var options=sexSel.options;    
        for(var i=0;ioptions.length;i++){    
            if(options[i].value==sex){    
                 options[i].selected=true;    
                break;    
             }    
         }    
     }        
    //校验18位的身份证号码    
   
    function validId18(_id){    
         _id=_id+"";    
        var _num=_id.substr(0,17);    
        var _parityBit=_id.substr(17);    
        var _power=0;    
        for(var i=0;i 17;i++){    
            //校验每一位的合法性    
   
            if(_num.charAt(i)'0'||_num.charAt(i)'9'){    
                return false;    
                break;    
             }else{    
                //加权    
   
                 _power+=parseInt(_num.charAt(i))*parseInt(powers[i]);    
                //设置性别    
   
                if(i==16&&parseInt(_num.charAt(i))%2==0){    
                     sex="female";    
                 }else{    
                     sex="male";    
                 }    
             }    
         }    
        //取模    
   
        var mod=parseInt(_power)%11;    
        if(parityBit[mod]==_parityBit){    
            return true;    
         }    
        return false;    
     }    
    //校验15位的身份证号码    
   
    function validId15(_id){    
         _id=_id+"";    
        for(var i=0;i_id.length;i++){    
            //校验每一位的合法性    
   
            if(_id.charAt(i)'0'||_id.charAt(i)'9'){    
                return false;    
                break;    
             }    
         }    
        var year=_id.substr(6,2);    
        var month=_id.substr(8,2);    
        var day=_id.substr(10,2);    
        var sexBit=_id.substr(14);    
        //校验年份位    
   
        if(year'01'||year '90')return false;    
        //校验月份    
   
        if(month'01'||month '12')return false;    
        //校验日    
   
        if(day'01'||day '31')return false;    
        //设置性别    
   
        if(sexBit%2==0){    
             sex="female";    
         }else{    
             sex="male";    
         }    
        return true;    
     }    
    //--    
   
/script    
input type="text" onblur="validId(this)" maxlength=18 size=18    
select id="sex"    
     option value="male"男/option    
     option value="female"女/option
来源:http://www.tulaoshi.com/n/20160220/1633168.html
看过《Javascript代码:校验身份证号程序》的人还看了以下文章 更多>>