jQuery Validate

jQuery Validate 是目前最流行的 jQuery 表单校验插件,它把"规则声明"与"校验逻辑"分离:你只需用 rules 描述每个字段的约束,插件就会在提交、失焦、按键时自动校验并显示错误提示。几分钟就能完成原本要写几十行 if 判断的表单校验,是每个 jQuery 开发者都该掌握的插件。

1. 引入插件

Validate 基于 jQuery,页面中须先引入 jQuery,再引入 validate 插件,推荐同时引入官方中文语言包:

<script src="https://example.com/jquery.min.js"></script>

说明:示例中的 https://example.com 地址为占位域名,实际使用请替换为官方 CDN 或本地文件路径。
<script src="https://example.com/jquery.validate.min.js"></script>
<script src="https://example.com/messages_zh.min.js"></script>

2. 基本用法

对表单调用 .validate(),在 rules 里声明规则、在 messages 里覆盖错误提示:

<form id="myform">
  姓名:<input type="text" name="name"><br>
  邮箱:<input type="text" name="email"><br>
  <input type="submit" value="提交">
</form>
<script>
$("#myform").validate({
  rules: {
    name: { required: true, minlength: 2 },
    email: { required: true, email: true }
  },
  messages: {
    name: { required: "请输入姓名", minlength: "姓名至少 2 个字" },
    email: { required: "请输入邮箱", email: "邮箱格式不正确" }
  }
});
// 效果:直接点"提交",两个输入框下方出现红色错误提示且表单不发送;
// 邮箱框填 aaa 再失焦,会提示"邮箱格式不正确"
</script>

3. 常用内置规则

规则含义规则含义
required必填email / url / date邮箱 / 网址 / 日期格式
minlength / maxlength最小 / 最大长度rangelength长度范围
min / max数值上 / 下限range数值区间
number / digits数字 / 正整数equalTo与另一字段相等

"确认密码"用 equalTo 指向原密码框即可:

rules: { pwd2: { required: true, equalTo: "#pwd" } }
// 效果:两次密码不一致时提示"请输入相同的值"(片段需放入 rules 配置中)

4. 自定义规则 addMethod

业务特殊规则(如手机号、身份证)用 $.validator.addMethod 扩展:

$.validator.addMethod("phone", function (value, element) {
  return this.optional(element) || /^1[3-9]\d{9}$/.test(value);
}, "请输入 11 位手机号");

$("#myform").validate({
  rules: { mobile: { required: true, phone: true } }
});
// 效果:手机号框填入 123 时提示"请输入 11 位手机号"

5. 进阶技巧

  • 引入 messages_zh 后错误提示自动变中文,无需逐条手写 messages;
  • errorPlacement 可自定义错误标签插入位置,方便套用 Bootstrap 等框架样式;
  • focusCleanup:聚焦时自动清除该字段的错误提示,体验更友好;
  • 与 AJAX 结合:在 submitHandler 回调里用 $.ajax 提交表单,实现无刷新"校验通过再提交"。

小结

Validate 用声明式 rules 替代手写判断,配合 addMethod 与中文包可覆盖绝大多数业务规则;再结合 submitHandler 做 Ajax 提交,是 jQuery 时代最省力的表单校验方案。

笔记加载中…