input 输入框 验证身份证号码
时间: 2023-10-13 18:07:48 浏览: 163
身份证号码验证
好的,您可以使用正则表达式来验证身份证号码。以下是一个JavaScript代码示例:
```javascript
//验证身份证号码的函数
function isValidIdCard(idCard) {
// 18位身份证号码的正则表达式
var reg = /(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
// 判断是否符合正则表达式
if (!reg.test(idCard)) {
return false;
}
// 获取身份证号码中的年月日等信息
var year = idCard.substring(6, 10);
var month = idCard.substring(10, 12);
var day = idCard.substring(12, 14);
// 判断年份是否合法
var currentYear = new Date().getFullYear();
var startYear = currentYear - 150;
if (year < startYear || year > currentYear) {
return false;
}
// 判断月份是否合法
if (month < 1 || month > 12) {
return false;
}
// 判断日期是否合法
var d = new Date(year, month - 1, day);
if (d.getFullYear() != year || d.getMonth() != month - 1 || d.getDate() != day) {
return false;
}
// 校验码验证
var idCardWi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1];
var idCardY = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
var idCardWiSum = 0;
for (var i = 0; i < 17; i++) {
idCardWiSum += parseInt(idCard.substring(i, i + 1)) * idCardWi[i];
}
var idCardMod = idCardWiSum % 11;
var idCardLast = idCard.substring(17);
if (idCardY[idCardMod] != idCardLast.toUpperCase()) {
return false;
}
// 所有验证通过,返回true
return true;
}
```
您可以将验证函数调用添加到input输入框的onblur事件中,如下所示:
```javascript
<input type="text" placeholder="请输入身份证号" onblur="validateIdCard(this.value)">
<script>
// 验证身份证号码的函数调用
function validateIdCard(idCard) {
if (isValidIdCard(idCard)) {
alert('身份证号码验证通过');
} else {
alert('身份证号码格式不正确');
// 清空输入框
document.getElementById('idcard').value = '';
}
}
</script>
```
阅读全文