javascript面向对象表单校验器通过validator主类协调规则、字段与反馈,field类封装输入项并支持链式注册规则,rule类实现可插拔验证逻辑,错误反馈解耦ui渲染。

<p>用 JavaScript 面向对象方式实现表单校验器,核心是把“规则”“字段”“错误管理”“触发时机”封装成可复用、可扩展的对象,而不是写一堆零散的 if-else 或重复的 DOM 操作。</p> <h3>设计核心类:Validator(校验器主类)</h3> <p>它不直接操作 DOM,而是协调规则、字段和反馈逻辑。构造时接收表单元素或配置对象,内部维护字段列表、全局开关(如是否实时校验)、错误存储结构。</p>
- 支持链式调用:比如 validator.addRule('username', 'required').addRule('username', 'minLength', 3)
- 内置常用规则方法(required、email、minLength、maxLength、pattern、confirm 等),每个返回 this,方便链式注册
- 提供 validate() 主动校验、validateField(name) 校验单个字段、reset() 清除所有错误状态
字段级抽象:Field 类(每个输入项一个实例)
每个 input/select/textarea 封装为 Field 实例,持有 name、DOM 元素、当前值、绑定的规则数组、错误消息栈。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 自动监听 input、blur、change 事件(可配置是否启用实时校验)
- 每次输入后调用自身规则链,逐个执行;任一规则失败就记录错误,不再执行后续规则(短路)
- 支持自定义规则函数:field.addRule((val) => val.includes('@'), '请输入包含 @ 的邮箱')
- 错误消息统一存入 field.errors 数组,便于统一渲染或取第一条展示
规则可插拔:Rule 类与内置规则库
规则不是硬编码在 if 里,而是独立 Rule 实例或纯函数。每个规则含验证逻辑 + 错误提示模板(支持占位符如 {min})。
- 例如 minLength 规则:(val, min) => typeof val === 'string' && val.length >= min
- 错误提示可传字符串或函数:(val, min) => `长度不能少于 ${min} 个字符`
- 支持异步规则(如用户名唯一性检查),返回 Promise,校验器自动 await 并处理 loading / success / fail 状态
- 所有规则注册到 Validator 的 ruleRegistry,支持全局复用和按需加载
错误反馈与 UI 同步
校验结果必须反映在界面上,但解耦样式逻辑。Field 提供 renderError(msg) 和 clearError() 方法,由用户决定如何呈现。
- 默认行为:在 input 后插入 span.error-tip 显示错误,添加 is-error class 到父容器
- 支持自定义 renderer:validator.setRenderer((field, msg) => { /* 用 tooltip 或 Toast 展示 */ })
- 成功状态也应反馈(如加绿色对勾图标),避免只报错不报喜
- submit 时自动阻止默认行为,全部通过才提交;支持手动触发 submit(如按钮点击)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










