## 验证规则 所有验证规则都在此设置,每个字段一个对象 ``` javascript var opts_validate = { rules: { tag_name: { require: true, // 验证类型 format: 'alpha_dash' // 验证格式 }, tag_note: { length: '1,30' // 验证类型 }, tag_status: { require: true }, // 更多规则... }, // 更多配置... }; ``` * [常规验证](#common) * [长度和区间验证](#length) * [字段比较](#comparison) * [格式验证](#format) * [特殊格式验证](#special) * [正则验证](#regex) * [ajax 验证](#ajax) ---------- #### 常规验证 > require 验证某个字段必须,例如: ``` javascript rules: { name: { require: true, }, }, ``` > accepted 验证某个字段是否为为 yes, on, 或是 1。这在确认 "服务条款" 是否同意时很有用,例如: ``` javascript rules: { name: { accepted: true, }, }, ``` ---------- #### 长度和区间验证 > in 验证某个字段的值是否在某个范围,例如: ``` javascript rules: { name: { in: '1,2,3', }, }, ``` > not_in 验证某个字段的值不在某个范围,例如: ``` javascript rules: { name: { not_in: '1,2,3', }, }, ``` > between 验证某个字段的值是否在某个区间,例如: ``` javascript rules: { name: { between: '25,60', }, }, ``` > not_between 验证某个字段的值不在某个区间,例如: ``` javascript rules: { name: { not_between: '20,30', }, }, ``` > length 验证某个字段的值的长度是否在某个范围,例如: ``` javascript rules: { name: { length: '4,25', }, }, ``` > min 验证某个字段的值的最小长度,例如: ``` javascript rules: { name: { min: 4, }, }, ``` > max 验证某个字段的值的最大长度,例如: ``` javascript rules: { name: { max: 25, }, }, ``` > after 验证某个字段的值是否在某个日期之后,例如: ``` javascript rules: { name: { after: '2016-3-18', }, }, ``` > before 验证某个字段的值是否在某个日期之前,例如: ``` javascript rules: { name: { before: '2016-3-18', }, }, ``` > expire 验证某个字段是否在某个有效日期之内,例如: ``` javascript rules: { name: { expire: '2016-2-1,2016-10-01', }, }, ``` ---------- #### 字段比较 > confirm 验证某个字段是否和另外一个字段的值一致,例如: ``` javascript rules: { password: { require: true, }, password_confirm: { confirm: true, }, }, ``` 系统会自动验证 password_confirm 与 password 是否一致。 该规则是自动验证的,只要在需要验证的字段名后加上 _confirm,也可以指定需要验证的字段名,例如: ``` javascript rules: { password: { require: true, }, repassword: { confirm: 'password', }, }, ``` > different 验证某个字段是否和另外一个字段的值不一致,例如: ``` javascript rules: { account: { require: true, }, account_different: { different: true, }, }, ``` 该规则与 confirm 类似,只要在需要验证的字段名后加上 _different,也可以指定需要验证的字段名,例如: ``` javascript rules: { account: { require: true, }, reaccount: { different: 'account', }, }, ``` > gt 或 > 验证是否大于某个值,例如: ``` javascript rules: { score: { gt: 100, }, num: { '>': 100, }, }, ``` > egt 或 >= 验证是否大于等于某个值,例如: ``` javascript rules: { score: { egt: 100, }, num: { '>=': 100, }, }, ``` > lt 或 < 验证是否小于某个值,例如: ``` javascript rules: { score: { lt: 100, }, num: { '<': 100, }, }, ``` > elt 或 <= 验证是否小于等于某个值,例如: ``` javascript rules: { score: { elt: 100, }, num: { '<=': 100, }, }, ``` > eq、= 或 same 验证是否等于某个值,例如: ``` javascript rules: { score: { eq: 100, }, num: { '=': 100, }, num_1: { same: 100, }, }, ``` > neq、<> 或 != 验证是否不等于某个值,例如: ``` javascript rules: { score: { neq: 100, }, num: { '<>': 100, }, num_1: { '!=': 100, }, }, ``` ---------- #### 格式验证 格式验证只需设置 format 参数 ``` javascript rules: { name: { format: 'number', }, }, ``` format 参数可选如下值 | 值 | 描述 | | - | - | | number | 纯数字(不包含负数和小数点) | | int | 整数 | | float | 浮点数 | | bool | 布尔值 | | email | Email | | array | 数组 | | date | 有效日期 | | time | 有效时间 | | date_time | 有效日期时间 | | alpha | 字母 | | alpha_number | 字母与纯数字 | | alpha_dash | 字母、数字、连字符(-)与下划线(_) | | chs | 中文 | | chs_alpha | 中文与字母 | | chs_alpha_number | 中文、字母与纯数字 | | chs_dash | 中文、字母、数字、连字符(-)与下划线(_) | | url | URL 地址 | | ip | IP 地址(含 IPv4 与 IPv6) | ---------- #### 特殊格式验证 以下规则为验证值是否为指定的格式,如: 假设规则为 `Y-m-d` 表单输入值为 `2019-05-06` 时,验证通过 表单输入值为 `19-05-06` 或 `May. 6, 2019` 验证不通过 > date_format 验证某个字段的值是否为指定格式的日期,例如: ``` javascript rules: { create_time: { date_format: 'Y-m-d', }, }, ``` > time_format 验证某个字段的值是否为指定格式的时间,例如: ``` javascript rules: { create_time: { time_format: 'H:i:s', }, }, ``` > date_time_format 验证某个字段的值是否为指定格式的日期时间,例如: ``` javascript rules: { create_time: { date_time_format: 'Y-m-d H:i:s', }, }, ``` ---------- #### 正则验证 支持直接使用正则验证,例如: ``` javascript rules: { zip: { regex: '\d{6}', }, }, ``` ---------- #### ajax 验证 基本用法,例如: ``` javascript rules: { zip: { require: true, ajax: { url: 'ajax.json' } }, }, ``` 上述例子会使用 `ajax.json?zip={:value}` 形式的 URL 进行验证。 URL 中的 `zip` 参数默认为规则名,`{:value}` 为表单值。 服务器返回 `3.0.2` 起,服务器返回的参数名改为可选,以下例子为默认值。 插件接受 json 对象的返回,如: ``` javascript { msg: '验证成功', // 消息 error_msg: '' // 错误信息,当此对象未定义或为空时,则视为验证成功 error: '' // 3.0.2 以前 } ``` 高级用法,例如: ``` javascript rules: { zip: { require: true, ajax: { key: 'zipcode', attach: { selectors: ['#cate', '#parent'], keys: ['cate', 'parent'] }, url: 'ajax.json' } }, }, ``` 上述例子会使用 `ajax.json?zipcode={:value}&cate={:cate}&parent={:parent}` 形式的 URL 进行验证。 URL 中的 `zipcode` 参数由 `key` 对象定义。 `attach` 对象为附加查询,其中: * `selectors` 定义的为表单选择器 * `keys` 定义的为参数名 他们会以 `{:参数名}={:选择器的值}` 的形式附加到 URL 中。