2.开发一个HTML 文档,用于收集用户的以下信息:姓名(大于2个字符,少于20字符)、身份证号(格式:SSSFFFYYYYMMRRNNNC)以及体重(限制范围为40~150kg)。必须针对这些表单元素创建事件处理程序,来检查所收集的信息是否正确。当检测到错误时,使用alert 窗口来显示错误消息。 注:身份证号格式说明 SSSFFF:6位地址号(0-9) YYYYMMRR:8位生日(年月日) NNN:3顺序号(0-9) C:1位校验码 注:身份证最后一位校验码算法如下: 1)将身份证号码前17位数分别乘以不同的系数,从第1位到第17位的系数分别为:7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 2)将得到的17个乘积相加。 3)将相加后的和除以11并得到余数。 4)余数可能为 0,1,2,3,4,5,6,7,8,9,10 ,其对应的身份证最后一位校验码为1,0,X,9,8,7,6,5,4,3,2。
时间: 2023-12-08 11:04:19 浏览: 61
以下是一个实现收集用户信息并进行验证的 HTML 代码,包括姓名、身份证号和体重三个表单元素,以及一个提交按钮。当用户点击提交按钮时,将触发名为 validate() 的事件处理程序,用于检查所收集的信息是否正确,并在检测到错误时使用 alert 窗口显示错误消息。
```html
<!DOCTYPE html>
<html>
<head>
<title>User Information Collection</title>
<meta charset="utf-8">
</head>
<body>
<form>
<label>Name:</label>
<input type="text" id="name">
<br><br>
<label>ID card number:</label>
<input type="text" id="idcard">
<br><br>
<label>Weight:</label>
<input type="number" id="weight">
<br><br>
<input type="button" value="Submit" onclick="validate()">
</form>
<script>
function validate() {
var name = document.getElementById("name").value;
var idcard = document.getElementById("idcard").value.toUpperCase();
var weight = document.getElementById("weight").value;
// validate name
if (name.length < 2 || name.length > 20) {
alert("Name must be between 2 and 20 characters.");
return;
}
// validate ID card number
var reg = /^[0-9]{6}[1-9][0-9]{3}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])[0-9]{3}[0-9X]$/;
if (!reg.test(idcard)) {
alert("Invalid ID card number.");
return;
}
// validate weight
if (weight < 40 || weight > 150) {
alert("Weight must be between 40 and 150 kg.");
return;
}
// validate ID card checksum
var factors = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
var sum = 0;
for (var i = 0; i < 17; i++) {
sum += parseInt(idcard.charAt(i)) * factors[i];
}
var rem = sum % 11;
var checksum = "";
if (rem == 0) {
checksum = "1";
} else if (rem == 1) {
checksum = "0";
} else if (rem == 2) {
checksum = "X";
} else {
checksum = (12 - rem).toString();
}
if (checksum != idcard.charAt(17)) {
alert("Invalid ID card number.");
return;
}
// submit form
alert("Form submitted successfully.");
document.forms[0].submit();
}
</script>
</body>
</html>
```
这个 HTML 文档中的 validate() 函数首先获取三个输入框的值,然后依次对这些值进行验证。如果任意一个验证条件不满足,就使用 alert 弹出窗口显示错误消息,并终止表单提交。如果所有信息都正确,则弹出窗口显示“Form submitted successfully.”,并提交表单。其中,身份证号的验证除了正则表达式外,还包括了最后一位校验码的计算和比对。
阅读全文