获取身份证信息中的籍贯、出生及性别信息


前言:之前在项目开发中,经常需要用户录入身份证信息,同时还要提供籍贯等信息。那么,如何从身份证号码中解析出籍贯等信息,就是本篇博客索要解决的。

其实,身份证号码前6位就是用户的籍贯编码,直接解析该6位号码就可以了。但是问题来了,前6位中的每2位,分别代表省、市、区编码,如何能够通过编码获取该编码对应的名称?这里面的信息量,估计没有几个愿意根据国标录完之后在进行比较的(太多)。后面,在项目的省市区三级联动插件中,发现了,里面有一个js文件,该文件中,就包含有全部的信息。那么我们直接解析这个文件就可以了。

另外,之前项目使用的前端校验是jQuery Validate,这个解析操作,应该在号码通过校验后,在进行解析。直接上代码

function idCardInfoResolver(idCardNumber) {
        var district = idCardNumber.substr(0 , 6);
        var province = district.substr(0 , 2) + "0000";
        var city = district.substr(0 , 4) + "00";
        
        //省份解析
        var provinceName = getCodeNameThroughCodeNumber('86' , province);
        if(provinceName == "error") {
            toastr.error("无法从当前输入的身份证编号中解析得到对应的身份信息" , "身份证信息解析");
            return false;
        }
        
        //市解析
        var cityName = getCodeNameThroughCodeNumber(province , city);
        if(cityName == "error") {
            toastr.error("无法从当前输入的身份证编号中解析得到对应的省份信息" , "身份证信息解析");
            return false;
        }
        
        //区解析
        var districtName = getCodeNameThroughCodeNumber(city , district);
        if(districtName == "error") {
            toastr.error("无法从当前输入的身份证编号中解析得到对应的区信息" , "身份证信息解析");
            return false;
        }
        
        var birthDay = "";
        if(idCardNumber.length == 15) {
            birthDay = "19" + idCardNumber.substr(6 , 12);
        } else if(idCardNumber.length == 18) {
            birthDay = idCardNumber.substr(6 , 14);
        }
        birthDay = birthDay.substr(0 , 4) + "年" + birthDay.substr(4 , 2) + "月"  + birthDay.substr(6 , 2) + "日";
        
        var sex  = parseInt(idCardNumber.substr(idCardNumber.length - 2 , 1));
        alert(sex);
        if(sex % 2 == 0) {
            sex = "女";
        } else {
            sex = "男";
        }
        
        $("#province").val(provinceName);
        $("#province").change();
        $("#city").val(cityName);
        $("#city").change();
        $("#district").val(districtName);
        $("#district").change();
        
        $("#bornDate").val(birthDay);
        $("#sex").val(sex);
    }
function getCodeNameThroughCodeNumber(code , codeNumber) {
        var addressName = "error";
        $.each(ChineseDistricts[code] , function(cd , address) {
            if(cd == codeNumber) {
                addressName = address;
                return false;
            }
        });
        
        return addressName;
    }

 

上述代码完成籍贯、出生日期以及性别信息的解析操作,看一下效果。

解析前:

解析后

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM