Open swanwish opened 7 years ago
JS:证件检查类
/** * 证件操作类 */ var CertificateUtil =function(){}; /** * 验证各类型证件是否正确 * @param num 证件号 * @returns {Boolean} */ CertificateUtil.prototype.cardValidate = function(idobject){ var num = idobject.num.toUpperCase(); var type = idobject.idType; var nation = idobject.nation; var result = false; switch (type) { case '01': /**身份证*/ if(this.idValidate(num)){ result = true; } break; case '02': /**护照*/ if(/^[a-zA-Z0-9]{8,}$/.test(num)){ result = true; } break; case '03': /**军官证*/ if(!(/^[a-zA-Z0-9\u4e00-\u9fa5\s]{5,18}$/.test(num))){ /**不是这个范围的字符,返回false;*/ return false; } var regexStr = new RegExp("[\u4e00-\u9fa5\u0020]","g"); /**\u4e00-\u9fa5 中文及 \u0020空格*/ var regexNum = new RegExp("[a-zA-Z0-9]","g"); /**字母数字*/ var matchstr = num.match(regexStr); var matchnum = num.match(regexNum); var length = 0; if( matchstr && matchnum ){ length = matchstr.length * 2 + matchnum.length; /***一个中文按两个字符计*/ } else if(matchstr){ length = matchstr.length * 2; } else if(matchnum){ length = matchnum.length; } else{ length = 0; } if(/^[a-zA-Z0-9\u4e00-\u9fa5\s]{5,}$/.test(num) && (length <= 18) && (length>=10) ){ result = true; } break; case '04': /***港澳回乡证*/ if(nation == 'HKG' && /^[H]\d{8}$/.test(num)){ result = true; } if(nation == 'MAC' && /^[M]\d{8}$/.test(num)){ result = true; } break; case '05': /***其他*/ if(/^[a-zA-Z0-9]{6,}$/.test(num)){ result = true; } break; case '06': /**出生证*/ if(/^[a-zA-Z]\d{9}$/.test(num)){ result = true; } break; case '07': /**户口本*/ if(this.idValidate(num)){ result = true; } break; case '08': /**士兵证*/ if(!(/^[a-zA-Z0-9\u4e00-\u9fa5\s\u0020]{5,18}$/.test(num))){ /**不是这个范围的字符,返回false;*/ return false; } var regexStr = new RegExp("[\u4e00-\u9fa5\u0020]","g"); /***\u4e00-\u9fa5 中文及 \u0020空格*/ var regexNum = new RegExp("[a-zA-Z0-9]","g"); /**字母数字*/ var matchstr = num.match(regexStr); var matchnum = num.match(regexNum); var length = 0; if( matchstr && matchnum ){ length = matchstr.length * 2 + matchnum.length; //一个中文按两个字符计 } else if(matchstr){ length = matchstr.length * 2; } else if(matchnum){ length = matchnum.length; } else{ length = 0; } if(/^[a-zA-Z0-9\u4e00-\u9fa5\s]{5,}$/.test(num) && (length <= 18) && (length>=10) ){ result = true; } break; case '09': /**台胞证*/ if(/^[0-9]{8}$/.test(num)){ result = true; } break; } return result; }; /** * 级联证件类型 * @param target 目标对象 * @param isplease 是否显示请选择 * @param that */ CertificateUtil.prototype.cascadeCardType = function(target,isplease,that){ var appidentifytype = input.appidentifytype; var info = ""; /**中国成年人*/ var info1="<option value='01'>身份证</option><option value='03'>军官证</option><option value='08'>士兵证</option>"; /**中国未成年人*/ var info5="<option value='01'>身份证</option><option value='06'>出生证</option><option value='07'>户口本</option>"; /**中国人,不分成年与否*/ var info6="<option value='01'>身份证</option><option value='03'>军官证</option><option value='06'>出生证</option><option value='07'>户口本</option><option value='08'>士兵证</option>" var info2="<option value='04'>港澳回乡证</option>"; var info3="<option value='09'>台胞证</option>"; var info4="<option value='02'>护照</option>"; /**请选择*/ var info7="<option value=''>请选择</option>"; /**判断国籍,显示相应证件类型*/ var nativacode=$(that).closest(".filltable").find(".nativacode").find("option:selected").val(); var nativacodeName=$(that).attr("name"); var isadult=""; /**判断当前的人是否成年 true 代表未成年 false 代表成年*/ var insured_isadult = ""; /**被保人是否成年 0代表未成年人 1 代表成年人*/ var appisadult=""; /**投保人是否成年 0代表未成年人 1 代表成年人*/ if(nativacode==""){ info = info7; }else{ /**判断是否成年 1.出生日期 2.isadult*/ var isadultflag = input.isadult; if(isadultflag=="1"){ if(nativacodeName.indexOf("app")>=0){ appisadult = "1"; } } else if(isadultflag=="0"){ if(nativacodeName.indexOf("app")>=0){ appisadult = "1"; } insured_isadult = "0"; } /**从出生日期判断成年与否*/ var birthvaluestring =$(that).closest(".filltable").find(".birthday").val(); var birthvalue=""; if(birthvaluestring!="" && birthvaluestring!="请选择"){ birthvalue= new Date(Date.parse(birthvaluestring.replace(/-/g,"/"))); isadult = ageUtil.minAgeLimit(birthvalue, 18); /**true 代表未成年 false 代表成年*/ }else{ isadult = ""; } if(target == null || target ==''){ return false; } if(isplease){ info = "<option value=''>请选择</option>"; } var value = $(that).val(); if(value == ''){ return false; }else{ if(value == 'CHN'){ if(nativacodeName.indexOf("app")>=0){ if(appisadult=="1"){ info += info1; }else{ info += info1; if(typeof(isadult) == "boolean"){ if(isadult){ info =info7; info += info5; } }else{ info = info7; info += info6; } } } else if(nativacodeName.indexOf("insured")>=0){ if(insured_isadult=="0"){ info += info5; }else{ info += info1; if(typeof(isadult) == "boolean"){ if(isadult){ info = info7; info += info5; } }else{ info = info7; info += info6; } } } else if(nativacodeName.indexOf("benef")>=0){ info += info1; if(typeof(isadult) == "boolean"){ if(isadult){ info = info7; info += info5; } }else{ info = info7; info += info6; } } } /**CHN end*/ else if(value == 'HKG' || value == 'MAC'){ info += info2; } else if(value == 'TWN'){ info += info3; } else { info += info4; } } } if(target != null && target !=""){ $(target).html(info); } certificateUtil.isdisplayappidtype(); /**显示性别,出生日期*/ certificateUtil.isdisplayappidtypePC(); /**显示性别,出生日期*/ } /** * 进入页面时根据国籍,判断显示证件 * */ CertificateUtil.prototype.displayappcardtype=function(){ /**中国成年人*/ var info1="<option value=''>请选择</option><option value='01'>身份证</option><option value='03'>军官证</option><option value='08'>士兵证</option>"; /**中国未成年人*/ var info5="<option value=''>请选择</option><option value='01'>身份证</option><option value='06'>出生证</option><option value='07'>户口本</option>"; /**中国人,不分成年与否*/ var info6="<option value=''>请选择</option><option value='01'>身份证</option><option value='03'>军官证</option><option value='06'>出生证</option><option value='07'>户口本</option><option value='08'>士兵证</option>" var info2="<option value=''>请选择</option><option value='04'>港澳回乡证</option>"; var info3="<option value=''>请选择</option><option value='09'>台胞证</option>"; var info4="<option value=''>请选择</option><option value='02'>护照</option>"; /**请选择*/ var info7="<option value=''>请选择</option>"; /**投保人判断国籍,不论成年与否如果为‘请选择’ ,显示相应证件类型*/ var app_nativacode=$("select[name='app_nativacode']").find("option:selected").val(); var appidentifytype=input.appidentifytype; /**如果是返回的,则页面证件类型已经有值*/ var insured_isadult = ""; /**0代表未成年人进来投保*/ if(app_nativacode==""){ /**国籍默认为请选择,值为空*/ $('#app_identifytype').html(info7); }else{ /**判断是否成年 1.isadult 2.出生日期*/ var isadultflag = input.isadult; var isadult=""; if(isadultflag=="" || typeof(isadultflag) == "undefined" || isadultflag == null){ var birthvaluestring =$("select[name='app_nativacode']").closest(".app-module-table").find(".birthday").val(); var birthvalue=""; if(birthvaluestring!=""){ birthvalue= new Date(Date.parse(birthvaluestring.replace(/-/g,"/"))); isadult = ageUtil.minAgeLimit(birthvalue, 18); /**true 代表未成年 false 代表成年*/ }else{ isadult = ""; /**如果成年与否,生日 均为未知,就会为空*/ } }else{ if(isadultflag=="1"){ isadult = false; /**true 代表未成年 false 代表成年*/ }else{ isadult = false; /**true 代表未成年 false 代表成年*/ insured_isadult = "0"; /**0 代表未成年 1 代表成年*/ } } /**根据isadult进行判断*/ if(typeof(isadult) == "boolean"){/**成年与否已经知道*/ if(app_nativacode=='CHN'){ if(!isadult){ /**成年*/ $('#app_identifytype').html(info1); }else{ /**未成年*/ $('#app_identifytype').html(info5); } } }else{/**成年与否不知道*/ if(app_nativacode=='CHN'){ $('#app_identifytype').html(info6); } } if(app_nativacode == 'HKG' || app_nativacode == 'MAC'){ $('#app_identifytype').html(info2); } else if(app_nativacode == 'TWN'){ $('#app_identifytype').html(info3); } else if( app_nativacode!='CHN' && app_nativacode!='HKG' && app_nativacode!='MAC' && app_nativacode!='TWN'){ $('#app_identifytype').html(info4); } /**如果国籍不为空并且证件类型不为空,代表是返回的*/ if(app_nativacode!="" && !(appidentifytype=="" || typeof(appidentifytype) == "undefined" || appidentifytype == null)){ $('#app_identifytype').val(appidentifytype); } } /**被保人的国家,决定显示相应证件类型*/ $("select[name='insured_nativacode']").each(function(){ /**var insuredidentifytype=input.insuredidentifytype; 如果是返回的,则页面证件类型已经有值*/ var insured_nativacode=$(this).find("option:selected").val(); if(insured_nativacode==""){ /**国籍默认为请选择,值为空*/ $(this).parents(".insured-module-table").find("[name='insured_identifytype']").html(info7); return true; /**跳出当前循环*/ } var insuredidentifytype = $(this).parents(".insured-module-table").find("[name='insured_identifytype']").val(); if(insuredidentifytype=="" || typeof(insuredidentifytype) == "undefined" || insuredidentifytype == null){ insuredidentifytype=input.insuredidentifytype; } var insuredisadultflag = insured_isadult; var insureisadult=""; if(insuredisadultflag=="" || typeof(insuredisadultflag) == "undefined" || insuredisadultflag == null){ var insuredbirthvaluestring =$(this).closest(".filltable").find(".birthday").val(); var insurebirthvalue=""; if(insuredbirthvaluestring!=""){ insurebirthvalue= new Date(Date.parse(insuredbirthvaluestring.replace(/-/g,"/"))); insureisadult = ageUtil.minAgeLimit(insurebirthvalue, 18); /**true 代表未成年 false 代表成年*/ }else{ insureisadult = ""; /**如果成年与否,生日 均为未知,就会为空*/ } }else{ if(insuredisadultflag=="0"){ insureisadult = true; /**true 代表未成年 false 代表成年*/ }else{ insureisadult = false; /**true 代表未成年 false 代表成年*/ } } /**根据insureisadult进行判断*/ if(typeof(insureisadult) == "boolean"){/**成年与否已经知道*/ if(insured_nativacode=='CHN'){ if(!insureisadult){ /**成年*/ $(this).parents(".insured-module-table").find("[name='insured_identifytype']").html(info1); }else{ /**未成年*/ $(this).parents(".insured-module-table").find("[name='insured_identifytype']").html(info5); } } }else{/**成年与否不知道*/ if(insured_nativacode=='CHN'){ $(this).parents(".insured-module-table").find("[name='insured_identifytype']").html(info6); } } if(insured_nativacode == 'HKG' || insured_nativacode == 'MAC'){ $(this).parents(".insured-module-table").find("[name='insured_identifytype']").html(info2); } else if(insured_nativacode == 'TWN'){ $(this).parents(".insured-module-table").find("[name='insured_identifytype']").html(info3); } else if( insured_nativacode!='CHN' && insured_nativacode!='HKG' && insured_nativacode!='MAC' && insured_nativacode!='TWN'){ $(this).parents(".insured-module-table").find("[name='insured_identifytype']").html(info4); } /**如果国籍不为空并且证件类型不为空,代表是返回的*/ if(insured_nativacode!="" && !(insuredidentifytype=="" || typeof(insuredidentifytype) == "undefined" || insuredidentifytype == null)){ $(this).parents(".insured-module-table").find("[name='insured_identifytype']").val(insuredidentifytype); } }); /**受益人判断是中国,显示相应证件类型*/ $("select[name='benef_nativacode']").each(function(){ var benef_nativacode=$(this).find("option:selected").val(); if(benef_nativacode==""){ /**国籍默认为请选择,值为空*/ $(this).parents(".benef-module-table").find("[name='benef_benidtype']").html(info7); return true; /**跳出当前循环*/ } var benefisadult=""; var benefbirthvaluestring =$(this).closest(".filltable").find(".birthday").val(); var benefbirthvalue=""; if(benefbirthvaluestring!=""){ benefbirthvalue= new Date(Date.parse(benefbirthvaluestring.replace(/-/g,"/"))); benefisadult = ageUtil.minAgeLimit(benefbirthvalue, 18); /**true 代表未成年 false 代表成年*/ }else{ benefisadult = ""; /**如果成年与否,生日 均为未知,就会为空*/ } /**var benidtype = $(this).parents(".benef-module-table").find("[name='benef_benidtype'] option:selected").text();*/ var benidtype = $(this).parents(".benef-module-table").find("[name='benef_benidtype']").val(); if(typeof(benefisadult) == "boolean"){/**成年与否已经知道*/ if(benef_nativacode=='CHN'){ if(!benefisadult){ /**成年*/ $(this).parents(".benef-module-table").find("[name='benef_benidtype']").html(info1); }else{ /**未成年*/ $(this).parents(".benef-module-table").find("[name='benef_benidtype']").html(info5); } } }else{/**成年与否不知道*/ if(benef_nativacode=='CHN'){ $(this).parents(".benef-module-table").find("[name='benef_benidtype']").html(info6); } } if(benef_nativacode == 'HKG' || benef_nativacode == 'MAC'){ $(this).parents(".benef-module-table").find("[name='benef_benidtype']").html(info2); } else if(benef_nativacode == 'TWN'){ $(this).parents(".benef-module-table").find("[name='benef_benidtype']").html(info3); } else if( benef_nativacode!='CHN' && benef_nativacode!='HKG' && benef_nativacode!='MAC' && benef_nativacode!='TWN'){ $(this).parents(".benef-module-table").find("[name='benef_benidtype']").html(info4); } /**如果国籍不为空并且证件类型不为空,代表是返回的*/ if(benef_nativacode!="" && !(benidtype=="" || typeof(benidtype) == "undefined" || benidtype == null)){ var value = 'option[value=\"'+benidtype+'\"]'; $(this).parents('.benef-module-table').find("[name='benef_benidtype']").find(value).attr("selected",true); } }); certificateUtil.isdisplayappidtype(); /**显示性别,出生日期*/ certificateUtil.isdisplayappidtypePC(); /**显示性别,出生日期*/ }; CertificateUtil.prototype.benefbenidtype=function(){ /**受益人判断是中国,显示相应证件类型*/ $("select[name='benef_nativacode']").each(function(){ var benef_nativacode=$(this).find("option:selected").val(); if(benef_nativacode==""){ /**国籍默认为请选择,值为空*/ $(this).parents(".benef-module-table").find("[name='benef_benidtype']").html(info7); return true; /**跳出当前循环*/ } var benefisadult=""; var benefbirthvaluestring =$(this).closest(".filltable").find(".birthday").val(); var benefbirthvalue=""; if(benefbirthvaluestring!=""){ benefbirthvalue= new Date(Date.parse(benefbirthvaluestring.replace(/-/g,"/"))); benefisadult = ageUtil.minAgeLimit(benefbirthvalue, 18); /**true 代表未成年 false 代表成年*/ }else{ benefisadult = ""; /**如果成年与否,生日 均为未知,就会为空*/ } var benidtype = $(this).parents(".benef-module-table").find("[name='benef_benidtype']").val(); if(typeof(benefisadult) == "boolean"){/**成年与否已经知道*/ if(benef_nativacode=='CHN'){ if(!benefisadult){ /**成年*/ $(this).parents(".benef-module-table").find("[name='benef_benidtype']").html(info1); }else{ /**未成年*/ $(this).parents(".benef-module-table").find("[name='benef_benidtype']").html(info5); } } }else{/**成年与否不知道*/ if(benef_nativacode=='CHN'){ $(this).parents(".benef-module-table").find("[name='benef_benidtype']").html(info6); } } if(benef_nativacode == 'HKG' || benef_nativacode == 'MAC'){ $(this).parents(".benef-module-table").find("[name='benef_benidtype']").html(info2); } else if(benef_nativacode == 'TWN'){ $(this).parents(".benef-module-table").find("[name='benef_benidtype']").html(info3); } else if( benef_nativacode!='CHN' && benef_nativacode!='HKG' && benef_nativacode!='MAC' && benef_nativacode!='TWN'){ $(this).parents(".benef-module-table").find("[name='benef_benidtype']").html(info4); } /**如果国籍不为空并且证件类型不为空,代表是返回的*/ if(benef_nativacode!="" && !(benidtype=="" || typeof(benidtype) == "undefined" || benidtype == null)){ var value = 'option[value=\"'+benidtype+'\"]'; $(this).parents('.benef-module-table').find("[name='benef_benidtype']").find(value).attr("selected",true); } }); certificateUtil.isdisplayappidtype(); /**显示性别,出生日期*/ certificateUtil.isdisplayappidtypePC(); /**显示性别,出生日期*/ } CertificateUtil.prototype.enableSex=function(){ var app_nativacode=$("select[name='app_nativacode']").find("option:selected").val(); if(app_nativacode!='CHN'){ $("input[name='app_sex']").removeAttr("disabled"); } } /** * 根据证件类型,判断是否显示性别 * */ CertificateUtil.prototype.isdisplayappidtype=function(){ var idtypes = $(".idType"); for(var i = 0; i < idtypes.length; i++){ var idtype = $(idtypes[i]).val(); if(idtype=='01'){ $(idtypes[i]).closest("ul").find(".displayappsex").attr("style","display:none"); $(idtypes[i]).closest("ul").find(".displayappbirday").attr("style","display:none"); $(idtypes[i]).closest("ul").find(".displayinsuresex").attr("style","display:none"); $(idtypes[i]).closest("ul").find(".displayinsurebirday").attr("style","display:none"); }else{ $(idtypes[i]).closest("ul").find(".displayappsex").attr("style",""); $(idtypes[i]).closest("ul").find(".displayappbirday").attr("style",""); $(idtypes[i]).closest("ul").find(".displayinsuresex").attr("style",""); $(idtypes[i]).closest("ul").find(".displayinsurebirday").attr("style",""); } } }; /** * 根据证件类型,判断是否显示性别,PC端 * */ CertificateUtil.prototype.isdisplayappidtypePC=function(){ var idtypes = $(".idType"); for(var i = 0; i < idtypes.length; i++){ var idtype = $(idtypes[i]).val(); if(idtype=='01'){ $(idtypes[i]).parents("table").find("#displayappsex").attr("style","display:none"); $(idtypes[i]).parents("table").find("#displayappbirday").attr("style","display:none"); $(idtypes[i]).parents("table").find("#displayinsuresex").attr("style","display:none"); $(idtypes[i]).parents("table").find("#displayinsurebirday").attr("style","display:none"); }else{ $(idtypes[i]).parents("table").find("#displayappsex").attr("style",""); $(idtypes[i]).parents("table").find("#displayappbirday").attr("style",""); $(idtypes[i]).parents("table").find("#displayinsuresex").attr("style",""); $(idtypes[i]).parents("table").find("#displayinsurebirday").attr("style",""); } } certificateUtil.enableSex(); }; /** * 验证身份证是否正确 * @param num 身份证 * @returns {Boolean} */ CertificateUtil.prototype.idValidate = function(num) { num = num.toUpperCase(); /**身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。 */ if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) { /**alert('输入的身份证号长度不对,或者号码不符合规定!\n15位号码应全为数字,18位号码末位可以为数字或X。');*/ return false; } /**校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。*/ /**下面分别分析出生日期和校验位*/ var len, re; len = num.length; if (len == 15) { re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/); var arrSplit = num.match(re); /**检查生日日期是否正确*/ var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]); var bGoodDay; bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4])); if (!bGoodDay) { /**alert('输入的身份证号里出生日期不对!');*/ return false; } else { /**将15位身份证转成18位*/ /**校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。*/ var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); var nTemp = 0, i; num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6); for (i = 0; i < 17; i++) { nTemp += num.substr(i, 1) * arrInt[i]; } num += arrCh[nTemp % 11]; return true; } } if (len == 18) { re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/); var arrSplit = num.match(re); /**检查生日日期是否正确*/ var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]); var bGoodDay; bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4])); if (!bGoodDay) { /**alert(dtmBirth.getYear());*/ /**alert(arrSplit[2]);*/ /**alert('输入的身份证号里出生日期不对!');*/ return false; } else { /**检验18位身份证的校验码是否正确。*/ /**校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。*/ var valnum; var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); var nTemp = 0, i; for (i = 0; i < 17; i++) { nTemp += num.substr(i, 1) * arrInt[i]; } valnum = arrCh[nTemp % 11]; if (valnum != num.substr(17, 1)) { /**alert('18位身份证的校验码不正确!'); //应该为: + valnum*/ return false; } return true; } } return false; }; var certificateUtil=new CertificateUtil();
JS:证件检查类