蓝桥校园一卡通
介绍
每年大一新生报道时,都需要办一张校园一卡通,无论吃饭、洗澡、买东西、甚至去图书馆借书都要用,小蓝想帮助学校做一个制卡界面,但是用 js 做用户输入验证不知道怎么写,快来帮助小蓝完成这个页面吧!
准备
本题已经内置了初始代码,打开实验环境,目录结构如下:
1 2 3 4 5 6
| ├── css │ ├── wish.css │ └── index.css ├── images │ └── college.jpg └── index.html
|
其中:
index.html 是主页面。
images 是图片文件夹。
css 是样式文件夹。
注意:打开环境后发现缺少项目代码,请复制下述命令至命令行进行下载。
1
| wget https://labfile.oss.aliyuncs.com/courses/18164/card.zip && unzip card.zip && rm card.zip
|
在浏览器中预览 index.html 页面,显示如下所示:

在初始化的时候输入框并没有做验证,卡片内容也无法正常显示。
目标
请在 index.html 文件中补全代码,具体需求如下:
- 完成表单验证:
- 姓名:2-4 个汉字,验证错误在对应的表单项(
class=form-group)添加类 class=has-error,并在下方显示报错信息(即 id=vail_name 的元素显示)。
tips: 正则中用 [\u4e00-\u9fa5] 表示汉字。
- 学号: 1-12 位纯数字,错误即在对应的表单项(
class=form-group)添加类 class=has-error,并在下方显示报错信息(即 id=vail_studentId 的元素显示)。
- 表单验证通过过后,正确显示卡片。在卡片(
class=info)元素下的(class=item)的元素中按照顺序分别显示表单提交的内容:姓名:xxx,学号:xxx, 学院:xxx。
完成后效果如下:

规定
- 请严格按照考试步骤操作,切勿修改考试默认提供项目中的文件名称、文件夹路径、class 名、id 名、图片名等,以免造成无法判题通过。
- 满足需求后,保持 Web 服务处于可以正常访问状态,点击「提交检测」系统会自动检测。
判分标准
总通过次数: 1550 | 总提交次数: 1712 | 通过率: 90.5%
难度: 简单 标签: 2022, 省模拟赛, Web 前端, JavaScript
题解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>蓝桥校园一卡通</title> <link rel="stylesheet" href="./css/bootstrap.min.css"> <link rel="stylesheet" href="./css/index.css" /> </head> <body> <div id="app"> <div class="form"> <div class="card" id="cardStyle"> <div class="cardName">蓝桥校园一卡通</div> <div class="info"> <div class="item"></div> <div class="item"></div> <div class="item"></div> </div> </div> <div class="content"> <div class="form-group"> <label for="studentName">姓名</label> <input type="text" class="form-control" id="studentName" placeholder="请输入姓名" aria-describedby="inputSuccess2Status"> <span id="vail_name" style="display: none;" class="help-block"> 姓名是2-4个汉字,请您检查输入的内容</span> </div> <div class="form-group"> <label for="studentId">学号</label> <input type="number" class="form-control" id="studentId" placeholder="请输入学号"> <span id="vail_studentId" style="display: none;" class="help-block"> 学号是1-12位的数字,请您检查输入的内容</span> </div> <div class="form-group"> <label for="college">学院</label> <select id="college" class="form-control"> <option value="软件工程学院">软件工程学院</option> <option value="信息技术学院">信息技术学院</option> <option value="数字媒体学院">数字媒体学院</option> <option value="计算机科学学院">计算机科学学院</option> </select> </div> <button id="submit">制卡</button> </div> </div> </div> <script> // 获取DOM元素对象 const studentName = document.getElementById("studentName"); // 姓名 const studentId = document.getElementById("studentId"); // 学号 const college = document.getElementById("college"); // 学院 const submit = document.getElementById("submit"); // 制卡按钮 const cardStyle = document.getElementById("cardStyle"); // 卡片 const item = document.querySelectorAll(".item") // 卡片项 submit.onclick = () => { // TODO 待补充代码 // 1. 姓名验证 const formGroup = document.querySelectorAll('.form-group') const nameTip = document.getElementById('vail_name') const regex1 = /^[\u4e00-\u9fa5]{2,4}$/ if (!regex1.test(studentName.value)) { formGroup[0].classList.add('has-error') nameTip.style.display = 'block' return } else { formGroup[0].classList.remove('has-error') nameTip.style.display = 'none' }
// 2. 学号验证 const studentIdTip = document.getElementById('vail_studentId') const regex2 = /^[\d]{1,12}$/ if (!regex2.test(studentId.value)) { formGroup[1].classList.add('has-error') studentIdTip.style.display = 'block' return } else { formGroup[1].classList.remove('has-error') studentIdTip.style.display = 'none' }
item[0].innerText = `姓名:${studentName.value}` item[1].innerText = `学号:${studentId.value}` item[2].innerText = `学院:${college.value}` // 添加 showCard 类显示放大一卡通的动画,请勿删除 cardStyle.classList.add('showCard') } </script> </body> </html>
|