獲取身份證信息中的籍貫、出生及性別信息


前言:之前在項目開發中,經常需要用戶錄入身份證信息,同時還要提供籍貫等信息。那么,如何從身份證號碼中解析出籍貫等信息,就是本篇博客索要解決的。

其實,身份證號碼前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