Javascript代码:校验身份证号程序

2016-02-20 01:03 25 1 收藏

今天图老师小编要向大家分享个Javascript代码:校验身份证号程序教程,过程简单易学,相信聪明的你一定能轻松get!

【 tulaoshi.com - Web开发 】

(本文来源于图老师网站,更多请访问https://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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

也就是说,如果得到余数为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

来源:https://www.tulaoshi.com/n/20160220/1633168.html

延伸阅读
标签: Web开发
441800清远市 441801市辖区 441802清城区 441821佛冈县 441823阳山县 441825连山壮族瑶族自治县 441826连南瑶族自治县 441827清新县 441881英德市 441882连州市 441900东莞市 442000中山市 445100潮州市 445101市辖区 445102湘桥区 445121潮安县 445122饶平县 445200揭阳市 445201市辖区 445202榕城区 445221揭东县 44...
标签: 身份证
身份证可异地换证 为方便长期离开常住户口所在地的群众就近办理居民身份证,同时创造更加安全的居民身份证社会应用环境,经中央全面深化改革领导小组第十五次会议审议通过,日前,公安部印发《关于建立居民身份证异地受理挂失申报和丢失招领制度的意见》(以下简称“意见”)。 《意见》指出,建立居民身份证异地受理、挂失申报和丢失招领制...
标签: 电脑入门
在进行员工信息统计的时候,往往用到姓名、性别、身份证号和出生日期等不同字段。这些信息单个输入工作量将会很大,如果输入了身份证号,我们就没有必要再出生日期了,出生日期可以从身份证号码里面提取,下面是具体的实现方法。 由于身份证号可能有15位和18位两种情况,首先需要让身份证号按照15位和18位进行区分。在Excel软件没有提供按照字...
标签: 电脑入门
在录入身份证号码的时候,一不小心就可能出错。下面我们就讲讲如何利用ET的格式转换功能,校验身份证号码中的出生日期部分。 图1 如图1所示,A列为身份证号码(输入前请先将该列单元格格式统一设置成文本),B列为用公式从身份证号中提取出的出生日期,以B2为例,公式为: =TEXT(IF(LEN(A2)=15,"19",)&MID(A2,7,IF(LEN(A2)=1...
当完成了银行卡的口头挂失后,需要到派出所进行身份证的补办,由于正式身份证办理需要一定的时间,所以先办理一个临时身份证,再到银行办理正式的挂失服务并补办新卡。 身份证丢了怎么挂失?临时身份证要多久? 身份证丢了怎么挂失 一般来说,身份证丢失之后并没有挂失的流程,公安机关也没有要求专门办理身份证挂失,公安机关...

经验教程

708

收藏

28
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部