博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS:证件检查类
阅读量:6813 次
发布时间:2019-06-26

本文共 19887 字,大约阅读时间需要 66 分钟。

hot3.png

/** * 证件操作类 */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="";	/**中国未成年人*/	var info5="";	/**中国人,不分成年与否*/	var info6=""	var info2="";	var info3="";	var info4="";	/**请选择*/	var info7="";	/**判断国籍,显示相应证件类型*/	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 = "";		}		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="";	/**中国未成年人*/	var info5="";	/**中国人,不分成年与否*/	var info6=""	var info2="";	var info3="";	var info4="";	/**请选择*/	var info7="";		/**投保人判断国籍,不论成年与否如果为‘请选择’ ,显示相应证件类型*/	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();

 

转载于:https://my.oschina.net/u/2277088/blog/746105

你可能感兴趣的文章