<!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>
验证身份证严谨方法并返回性别
最新推荐文章于 2023-12-08 14:33:19 发布