根据中国大陆的身份证号码规则,倒数第二位数字是用来表示性别的,奇数代表男性,偶数代表女性。而生日则可以通过身份证号码的前6位数字后的六位数得知。下面是一个使用JavaScript来实现根据身份证号判断性别和生日的示例代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
身份证<input type="text" id="sfz" onchange="tific()">
性别<input type="text" id="xb">
生日<input type="text" id="sr">
<script>
// 根据身份证号显示性别生日
function tific() {
let IDNu = document.getElementById('sfz');
// 获取身份证号的输入框
console.log(IDNu);
var re =
/^\d{6}(((19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{3}([0-9]|x|X))|(\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{3}))$/;
// 身份证正则表达式
if (!re.test(IDNu.value)) {
// 测试身份证是否正确
alert("身份证号码有误,请重新填写!");
IDNu.focus();
//location.replace("");
return false;
} else {
alert('身份证正确')
}
var str = IDNu.value;
console.log(str);
var born_border = document.getElementById('sr');
// 获取生日输入框
try {
if (typeof(eval(born_border)) == "undefined") {
//alert('参数born_border为空');
} else {
born_border.value = str.substring(6, 10) + "-" + str.substring(10, 12) + "-" + str.substring(12, 14);
}
} catch (e) {
//alert('参数born_border错误');
}
//性别
let sew = ''
var sec = str.substring(16, 17);
var sex = document.getElementById('xb');
// 获取性别输入框
if (sec % 2 == 0) {
sew = "女";
} else {
sew = "男";
}
console.log(sew);
sex.value = sew;
for (i = 0; i < sex.length; i++)
if (sex.options[i].value == sew) {
sex.options[i].selected = true;
}
}
</script>
</body>
</html>