JavaScript 中监听表单字段 blur 事件校验,需 DOM 加载后绑定事件,清除旧状态,执行非空、邮箱等校验并更新 UI;可封装复用函数,结合 HTML5 原生验证,但须在 submit 时再次全量校验。

在 JavaScript 中监听表单字段的失焦(blur)事件并进行校验,核心是给目标 或其他表单元素绑定 blur 事件,然后在回调中执行校验逻辑(比如检查是否为空、格式是否合法等),再根据结果更新 UI(如显示错误提示、添加/移除 class)。
绑定 blur 事件并校验值
最直接的方式是用 addEventListener 监听 blur,并在回调里读取 value 进行判断:
- 确保 DOM 加载完成后再绑定,避免元素未就绪
- 校验前可先清除旧的错误状态(如移除 error class、隐藏上一条提示)
- 常见校验:非空、邮箱格式、手机号长度、密码确认一致性等
示例:
const emailInput = document.querySelector('#email');
emailInput.addEventListener('blur', function() {
const value = this.value.trim();
const isValid = value && /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value);
// 清除旧状态
this.classList.remove('error', 'success');
const errorEl = this.nextElementSibling;
if (errorEl && errorEl.classList.contains('error-message')) {
errorEl.textContent = '';
}
// 更新状态
if (!isValid) {
this.classList.add('error');
if (errorEl) errorEl.textContent = '请输入有效的邮箱地址';
} else {
this.classList.add('success');
}
});
复用校验逻辑:封装成函数
多个字段共用相似校验规则时,把校验逻辑抽离为函数,提升可维护性:
- 每个字段传入自己的规则(正则、最小长度、必填标识等)
- 统一处理提示元素(如紧跟在 input 后的
) - 支持异步校验(如用户名是否已存在),此时需结合
Promise和加载态
结合 HTML5 原生验证(可选增强)
可以配合 required、type="email"、pattern 等属性,再用 checkValidity() 方法触发原生校验:
-
input.checkValidity()返回布尔值,同时会触发invalid事件 -
input.reportValidity()主动显示浏览器默认错误气泡(兼容性好) - 注意:blur 时调用
reportValidity()会覆盖自定义提示,建议二选一
注意事项
- 不要仅依赖 blur 校验——用户可能不离开字段就提交,务必在表单 submit 时再次全量校验
- 移动端 focus/blur 触发时机与桌面端略有差异,测试时需覆盖真机
- 避免在 blur 中执行耗时操作(如未节流的远程请求),影响交互响应
- 无障碍方面:错误信息需通过
aria-invalid="true"和aria-describedby关联到输入框
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











