欢迎您来到懒之才-站长的分享平台!   学会偷懒,并懒出境界是提高工作效率最有效的方法!
首页 > 经验分享 > Js&Ajax > Js验证15位 18位身份证号码 并判断男女是否相符

Js验证15位 18位身份证号码 并判断男女是否相符

2018-06-25 1468 收藏 0 赞一个 0 真差劲 0 去评论

身份证验证在WEB开发中经常遇到,因为现在是新老身份证过渡期,所以判断身份证不光是要判断18位新身份证号码,还要照顾到15位的老身份证号,有些麻烦,不过掌握了Js算法,一切就简单了,本Js函数不但实现了15位、18位身份证号码的判断,而且还可判断男女是否和身份证相符,相当实用了。

<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.getElementByIdx("sex");
    var options=sexSel.options;
    for(var i=0;i<options.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>
</select>

这是核心代码,没有提交按钮,你自己弄一个试下。

一、推荐使用迅雷或快车等多线程下载软件下载本站资源。

二、未登录会员无法下载,登录后可获得更多便利功能,若未注册,请先注册。

三、如果服务器暂不能下载请稍后重试!总是不能下载,请点我报错 ,谢谢合作!

四、本站大部分资源是网上搜集或私下交流学习之用,任何涉及商业盈利目的均不得使用,否则产生的一切后果将由您自己承担!本站将不对任何资源负法律责任.如果您发现本站有部分资源侵害了您的权益,请速与我们联系,我们将尽快处理.

五、如有其他问题,请加网站设计交流群(点击这里查看交流群 )进行交流。

六、如需转载本站资源,请注明转载来自并附带链接

七、本站部分资源为加密压缩文件,统一解压密码为:www.aizhanzhe.com

大家评论