javascript中用class封装表单校验,核心是统一管理规则、状态与事件:内置字段规则映射、支持同步/异步校验、自动绑定input/blur/submite事件、动态添加规则、i18n提示及错误状态跟踪。

JavaScript 中用 class 语法封装表单校验逻辑,核心是把验证规则、错误提示、状态管理打包成可复用的类,让多个表单或字段能统一调用、灵活扩展。
定义校验规则与字段映射
在 class 内部用对象或 Map 存储字段名和对应规则(如必填、邮箱格式、最小长度),支持传入自定义正则或函数。规则可组合,比如一个输入框同时要求「非空 + 是邮箱」。
- 每个规则返回
{ valid: boolean, message: string },便于统一处理反馈 - 支持动态规则:构造时传入配置对象,或通过实例方法(如
addRule('phone', isMobile))追加 - 示例规则函数:
const isEmail = (val) => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(val)
绑定事件并实时校验
在 class 初始化时,自动为表单元素绑定 input、blur、submit 等事件。避免手动写一堆 addEventListener。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
input触发即时反馈(如边输边标红) -
blur做一次完整校验(适合离开焦点时检查) -
submit阻止默认提交,并批量校验所有字段;任一失败就聚焦首个错误项 - 内部用
Element.closest()找到字段容器,方便插入提示文案或添加error类名
管理校验状态与错误信息
用私有属性(如 #errors、#touched)跟踪每个字段的校验结果和用户交互状态,避免全局变量污染。
-
validateField(name)单独校验某字段,返回结果并更新内部状态 -
validateAll()遍历全部字段,返回汇总结果{ valid: boolean, errors: { [name]: string } } - 提供
getErrors()和isFieldValid(name)供外部读取,不暴露内部结构 - 错误信息可支持 i18n:构造时传入语言包,
message字段从翻译对象中取值
支持异步校验(如用户名是否已存在)
对需要发请求的场景(如注册时检查用户名),在 class 中预留 asyncRules 机制,避免阻塞主流程。
- 给字段配置
async: true,触发时调用传入的 Promise 函数 - 自动处理 loading 状态:显示「检查中…」,禁用提交按钮,避免重复提交
- Promise resolve 后更新对应字段状态;reject 时显示后端返回的错误提示
- 建议搭配防抖(debounce)使用,比如用户名输入停顿 300ms 后再请求
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










