开发一个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-02 16:04:11 浏览: 48
以下是代码实现:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>User Information</title>
<script>
function validateName() {
var name = document.getElementById("name").value;
if (name.length < 3 || name.length > 20) {
alert("Please enter a name between 3 and 20 characters.");
return false;
}
return true;
}
function validateID() {
var id = document.getElementById("id").value;
if (!/^\d{6}\d{4}\d{2}\d{2}\d{3}[0-9X]$/.test(id)) {
alert("Please enter a valid ID number in the format SSSFFFYYYYMMRRNNNC.");
return false;
} else {
var codes = "10X98765432";
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(id.charAt(i)) * factors[i];
}
var index = sum % 11;
if (codes.charAt(index) !== id.charAt(17)) {
alert("Please enter a valid ID number.");
return false;
}
}
return true;
}
function validateWeight() {
var weight = document.getElementById("weight").value;
if (weight < 40 || weight > 150) {
alert("Please enter a weight between 40 and 150 kg.");
return false;
}
return true;
}
function validateForm() {
return validateName() && validateID() && validateWeight();
}
</script>
</head>
<body>
<form onsubmit="return validateForm()">
<label for="name">Name:</label>
<input type="text" id="name"><br>
<label for="id">ID Number:</label>
<input type="text" id="id"><br>
<label for="weight">Weight (kg):</label>
<input type="number" id="weight"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
```
在 HTML 中,我们创建了一个表单,包含了三个表单元素:姓名、身份证号和体重。每个表单元素都有自己的 `id` 属性,方便 JavaScript 代码中进行访问。表单有自己的 `onsubmit` 事件处理程序,当用户点击提交按钮时就会调用 `validateForm()` 函数来检查表单数据是否合法。
`validateName()` 函数用来检查姓名是否合法,它首先获取姓名输入框的内容,然后检查长度是否在 3 和 20 之间,如果不是就弹出一个 alert 窗口并返回 false 表示检查不通过。
`validateID()` 函数用来检查身份证号是否合法,它首先获取身份证号输入框的内容,然后检查是否符合指定的格式,如果不符合就弹出一个 alert 窗口并返回 false 表示检查不通过;如果符合格式,就按照指定的算法计算校验码,并与输入的身份证号最后一位进行比较,如果不相同就弹出一个 alert 窗口并返回 false 表示检查不通过。
`validateWeight()` 函数用来检查体重是否合法,它首先获取体重输入框的内容,然后检查是否在 40 和 150 之间,如果不是就弹出一个 alert 窗口并返回 false 表示检查不通过。
`validateForm()` 函数用来检查所有表单元素是否合法,它调用了三个单独的检查函数,只有所有的检查函数都返回 true,才返回 true 表示表单数据全部合法。如果有任何一个检查函数返回 false,就停止检查并返回 false 表示表单数据不合法。
阅读全文