web实验javascript语句实现个人身份证输入并验证其合法性
时间: 2024-10-23 12:21:02 浏览: 24
在Web上实现JavaScript对个人身份证号码的输入和合法性验证,通常会涉及到正则表达式和一些基本的数据格式检查。以下是一个简单的HTML和JavaScript示例:
```html
<!DOCTYPE html>
<html lang="zh">
<head>
<title>身份证验证</title>
</head>
<body>
<label for="idNumber">请输入身份证号码:</label>
<input type="text" id="idNumber" pattern="\d{15}|\d{18}" oninput="validateId()" required>
<p id="validationMessage"></p>
<script>
function validateId() {
var input = document.getElementById('idNumber').value;
var message = document.getElementById('validationMessage');
// 验证15位和18位的数字格式
if (!/^\d{15}$|^\d{18}$/.test(input)) {
message.textContent = '请输入15位或18位数字的身份证号码';
return;
}
// 验证18位身份证校验码是否正确
if (input.length === 18) {
var checkCodePattern = /^(\d{17})(\d)$/;
var parts = input.match(checkCodePattern);
if (!parts || !checkSum(parts[1], parseInt(parts[2]))) {
message.textContent = '身份证校验码错误';
return;
}
}
// 校验码计算函数
function checkSum(idCode, checkDigit) {
var sum = 0, weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
for (var i = 0; i < idCode.length; i++) {
sum += parseInt(idCode.charAt(i)) * weights[i % weights.length];
}
var mod = sum % 11;
return (mod > 1 ? 11 - mod : mod) == checkDigit;
}
message.textContent = '身份证号码有效';
}
</script>
</body>
</html>
```
这个例子中,我们创建了一个文本输入框,并设置了`pattern`属性用于验证输入的长度。当用户输入后,`validateId`函数会被触发,它首先检查长度是否合法,然后对于18位的身份证还会进一步检查校验码。
阅读全文