填空题组件可用原生HTML+JS实现,需确保结构语义化、数据可映射、回显不丢值,避开DOM重复ID、正则误匹配、空格/大小写校验失效三类高频坑。
填空题组件不用框架也能做,关键在结构语义化、数据可映射、回显不丢值——原生 HTML + JS 就够用,但必须避开 DOM 重复 ID、正则误匹配、空格/大小写校验失效这三类高频坑。
怎么用
占位符动态生成填空输入框
用户配置题干时用
、
表示填空位置,JS 需用正则提取并替换成
,但注意:
正则必须用
(带全局 flag 和捕获组),不能只写
,否则多层嵌套或连续占位会错位
替换时每个
的
设为
、
,避免 name 重复导致表单提交只取最后一个值
别给 input 加固定
,改用
存位置,回显和校验都靠它查数组
原始题干里如果有字面量
(比如讲正则的题目),需提前转义,例如写成
,并在匹配前先还原
填空答案怎么比对才不容易判错
用户输入和标准答案直接
会因空格、换行、大小写失败,必须统一预处理:
用
标准化两边字符串
填空题的
字段建议存为数组(如
),校验时用
如果题干含多个填空,
可设为 JSON 字符串,如
,解析后逐项比对
不要在 input 上加
后就以为前端校验完整了——空格输入、全角空格、零宽字符仍能绕过,必须 JS 层二次清洗
怎么让填空组件支持回显且不污染原始 DOM
用户刷新或编辑时要恢复上次填写的内容,但不能靠 innerHTML 替换整个题干(会丢失事件绑定和已输入值):
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
立即学习
“
前端免费学习笔记(深入)
”;
初始化时遍历所有
,从保存的数据对象中取
赋值给
不要用
把答案再塞回去——那会销毁 input 元素,导致焦点丢失、输入历史清空
如果题干是富文本(含
或换行),填空位置要用
占位,再用 JS 把 input 插入该位置,而非直接替换文本
回显前检查数据长度是否匹配填空数量,少于项数就补空字符串,多于项数就截断,避免
为什么用
包裹填空题比单独用
{n}{1}{2}/\{(\d+)\}/g/\{.*?\}/inputnameblank-1blank-2iddata-index="1"{1}\{1\}===String(value).trim().toLowerCase().replace(/\s+/g, ' ')answer["HTTP", "http", "Http"]answers.some(a => unify(a) === unify(input.value))dataset.answerdata-answer='["GET", "POST"]'requiredinput[data-index]data[index]input.valueinnerHTML.replace()index out of bounds
更稳
不是为了提交到后端,而是借力浏览器原生机制:
form.checkValidity()
可批量触发所有
required
填空的验证气泡提示
监听
form.submit
事件做统一拦截,比给每个 input 绑
blur
更轻量
用
form.dataset.answer
存标准答案,比挂全局变量或查 DOM 更解耦
如果后续要加「重置」按钮,直接
form.reset()
就清空所有填空,不用手动遍历 input
最易被忽略的是:填空位置索引必须从 1 开始且连续。如果题干里写了
{1}
和
{3}
中间漏了
{2}
,回显数组下标就会错位——要么强制校验配置合法性,要么在校验时用
Map
以 index 为 key 存答案,不依赖数组顺序。
相关文章
- css div ul li 导航栏(横向):(纯CSS 多级菜单IE6能支持的)_html/css_WEB-ITnose
- ExtJS 2.0实用简明教程之应用ExtJS
- Jquery ajax书写方法代码实例解析
- JQuery 写的个性导航菜单_jquery
- Selenium 点击动态加载表格中可点击 td 元素的完整解决方案
- 精通CSS+DIV网页样式与布局设置表单和表格_html/css_WEB-ITnose
- JavaScript 字符串按标点符号与字母数字字符分割并保留分隔符
- vue2.0项目怎么部署到服务器
- html5 table标签的样式介绍(另附html5 table css居中的实例)
- css 类名的单词连字符:下划线还是连接符?
