表单验证演练场 - HTML5 Constraint API 演示
展示各种 HTML5 验证属性(required, pattern, min, max 等)和自定义验证消息的效果。
UD5工具箱
实时测试 HTML5 Constraint Validation API,查看 ValidityState 各属性变化,深入理解浏览器原生验证机制。
ValidityState 对象,包含多个布尔属性来描述具体的验证失败原因。主要方法包括 checkValidity()(静默检查)和 reportValidity()(检查并显示浏览器原生错误提示)。这套API被所有现代浏览器支持,无需额外库即可实现强大的表单验证。
ValidityState 对象包含以下11个布尔属性:
false 时为 true,表示字段完全有效。required 但值为空。type 类型不匹配(如 email 格式错误)。pattern 正则表达式。maxLength。minLength。min。max。step 步长约束。setCustomValidity() 设置了自定义错误消息。true 或 false,不会触发浏览器的原生错误提示UI(气泡)。适合在后台进行验证状态检测。novalidate 属性的表单上,reportValidity() 仍然能正常显示提示。
element.setCustomValidity(message) 可以设置自定义验证错误。如果 message 为非空字符串,则字段被标记为无效,customError 变为 true,且 validationMessage 返回该消息。重要:当条件满足后,必须调用 setCustomValidity('')(空字符串)来清除自定义错误,否则字段将一直处于无效状态。常见场景包括:确认密码匹配、用户名唯一性检查、跨字段验证等。
<form> 标签上添加 novalidate 属性即可禁用浏览器默认的表单提交验证。这样表单提交时不会弹出原生错误提示,开发者可以完全通过 JavaScript 和 Constraint API 来自行处理验证逻辑和错误展示。例如:<form novalidate>。这在使用自定义UI框架或需要统一错误展示风格时非常有用。
展示各种 HTML5 验证属性(required, pattern, min, max 等)和自定义验证消息的效果。
定义字段名称和类型(姓名、邮箱、数字范围等),批量生成符合规则的 JSON 模拟数据。
覆盖加载、渲染、安全、可访问性等领域的自查清单,勾选后生成得分与建议。
在单页内模拟MPA过渡效果,自定义进场/出场动画,体验View Transitions API丝滑切换。
列出所有 Reflect 静态方法,提供参数输入并执行,查看返回值和副作用。
枚举连接的显示器,并在特定的屏幕上打开新窗口,体验现代多显示器Web应用。
向任意输入URL发送请求,清晰显示响应状态码、头信息和体,类似轻量级Postman。
在同一数据上运行多种数组遍历方式,测量并比较它们的执行时间,辅助性能优化决策。
展示一些常用内置HTML元素和自定义元素例子,提供代码复制。
选择扩展类型(弹出、内容脚本、后台),生成完整的项目文件和 manifest.json。
使用原生HTML Popover属性创建提示、菜单与对话框,展示四种触发方式及样式定制。
编写 HTML 和 import map,在浏览器中直接导入裸标识符模块并执行。
提供一份涵盖性能、安全、备份、监控等上线前检查清单,可自定义勾选。
对比 ES Module 和经典脚本的变量作用域、严格模式以及执行时机。
配置事件类型和重试间隔,生成用于接收 SSE 的前端 EventSource 代码和后端流示例。
分别在主线程和 Worker 中使用 Canvas 执行密集绘制,对比 FPS 和主线程阻塞程度。
向指定 URL 发送不同 HTTP 方法的请求,显示响应状态码、头部和主体,学习 RESTful API。
输入 Emmet 缩写,实时显示展开后的 HTML 结构,学习高级 Emmet 技巧。
输入 URL,列出所有第三方域名的脚本,估算其对加载时间的影响。
使用Service Worker拦截fetch请求,并返回用户自定义的JSON模拟数据,用于前端独立开发。
记录页面交互触发的所有DOM事件及其目标、冒泡阶段,以日志和瀑布形式展示。
在前端创建模拟 SSE 连接,接收服务器推送的消息流并实时渲染到页面。
生成实现点击锚点平滑滚动到目标位置所需的JS代码及CSS scroll-behavior。
使用 WebSocketStream 建立连接,通过 ReadableStream/WritableStream 读写数据。
定义端点、JSON响应体和延迟毫秒,模拟后端API供前端本地开发调试。
输入 HTML/CSS/JS 代码,在隔离沙箱中即时渲染,支持控制台捕获。
通过实例展示原生拖放 API 的使用,包括文件拖拽上传和页面元素排序功能。
捕捉页面粘贴事件,展示文本、HTML 或图片数据,演示如何定制粘贴行为。
创建带 # 私有字段的类,尝试外部访问观察语法错误,理解封装。
创建 Symbol,查看其描述与唯一性,理解如何作为对象属性键使用。