jQuery身份证提取出生年月和性别

213 阅读1分钟

性别:<select name="gender" id="gender">
       <option value="">选择性别</option>
       <option value="male">男</option>
       <option value="female">女</option>
     </select>
生日:<input type="text" name="birthday_en" value="" id="birthday_en" />
身份证:<input type="text" id="taxId_en" value="" id="null_taxId_en" />

JQuery 代码:

$("#taxId_en).change(function(){
            $("#gender").val("");
            $("#birthday_en").val("");


            var idCardNo=$(this).val();
            var birthDayCode;
            var genderIndex;
            if(idCardNo.length==15 && check15IdCardNo(idCardNo)){
                birthDayCode = '19' + idCardNo.substring(6,12);
                genderIndex=14;
            }else if(idCardNo.length==18 && check18IdCardNo(idCardNo)){
                birthDayCode = idCardNo.substring(6,14);
                genderIndex=16;
            }else{
                return ;
            }
            setGender (idCardNo,genderIndex);
            setBirthDate (birthDayCode);
        });
function setGender(idCardNo, genderIndex) {
    if (parseInt(idCardNo.charAt(genderIndex)) % 2 == 0) {

        $("#gender").val("female");
    } else {

        $("#gender").val("male");
    }

}

function setBirthDate(birthDayCode) {

    if (checkBirthDateCode(birthDayCode)) {
        var birthDate = birthDayCode.substring(0, 4) + "-" + birthDayCode.substring(4, 6) + "-" + birthDayCode.substring(6);
        $("#birthday_en").val(birthDate);

    }

}

function check15IdCardNo(idCardNo) {
    var check = /^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/.test(idCardNo);
    return check;

}

function check18IdCardNo(idCardNo) {
    var check = /^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/.test(idCardNo);
    return check;
}

function checkBirthDateCode(birthDayCode) {
    var check = /^[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))$/.test(birthDayCode);
    if (!check) {
        return false;
    }

    var yyyy = parseInt(birthDayCode.substring(0, 4), 10);
    var mm = parseInt(birthDayCode.substring(4, 6), 10);
    var dd = parseInt(birthDayCode.substring(6), 10);
    var xdata = new Date(yyyy, mm - 1, dd);
    if (xdata > new Date()) {
        return false;
    } else if ((xdata.getFullYear() == yyyy) && (xdata.getMonth() == mm - 1) && (xdata.getDate() == dd)) {
        return true;

    } else {
        return false;
    }


}