验证身份证严谨方法并返回性别

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<input type="text" id="idcard" />
		<button type="button" id="btn" >验证</button>
		<h2>是否正确: <span style="color: #f40;" id="isShow" ></span></h2>
		<h2>性别: <span style="color: #f40;" id="sexId" ></span></h2>
	</body>
	<script type="text/javascript">
		var idcardInput = document.getElementById("idcard");
		var btn = document.getElementById("btn");
		var isShowBox = document.getElementById("isShow");
		var textBox = document.getElementById("sexId");
		btn.onclick = function(){
			var val = idcardInput.value;
			if(val){
				var isCard = checkIDCard(val);
				console.log(isCard);
				isShowBox.innerHTML = isCard.status;
				if(isCard.status)
				{					
					textBox.innerHTML = isCard.sex;
				}
			}
		}
		/**
		 * 验证身份证严谨判断,并返回性别方法
		 * @param {Object} obj
		 * @return {Object} status 状态是否正确 sex 性别
		 */
		function checkIDCard(obj)
		{
			var sex = "";
			var IDCard = obj;//身份证号码
			if(IDCard)
			{			
				var address = IDCard.substring(0,6);
				var birthday = IDCard.substring(6,14);
				var sequenceCode =  IDCard.substring(14,17);
				var checkCode =  IDCard.substring(17);
				var province={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江 ",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北 ",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏 ",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"};
				var year =  birthday.substring(0,4);
				var month = birthday.substring(4,6);
				var day = birthday.substring(6);
				var tempDate = new Date(year,parseFloat(month)-1,parseFloat(day)); 
				if(province[parseInt(address.substr(0,2))] == null || (tempDate.getFullYear()!=parseFloat(year) || tempDate.getMonth()!=parseFloat(month)-1 || tempDate.getDate()!=parseFloat(day)))
				{
					return ({status: false});
				}
				else
				{
					var weightedFactors = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ];
					var valideCode = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ];
					var IDCardArray =IDCard.split("");
					var sum = 0;
					if (IDCardArray[17].toLowerCase() == 'x') 
					{
						IDCardArray[17] = 10; 
					}
					for ( var i = 0; i < 17; i++) 
					{
						sum += weightedFactors[i] * IDCardArray[i];   
					}
					valCodePosition = sum % 11;
					if (IDCardArray[17] == valideCode[valCodePosition])
					{
							sex = "男";
						if(sequenceCode % 2 == 0)
						{
							sex = "女";
						}
						return ({status: true,sex: sex});
					}
					else
					{
						return ({status: false});
					}
				}
			}
		}
	</script>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值