Skip to content

表单校验(新版) ​

我们内置了一套新的表单验证机制,通过内置的全新验证引擎可以自动根据组件 value 类型并执行验证逻辑,适配所有 UI 版本,解决了原有方案需要针对不同数据类型和 UI 框架专门适配的问题,显著降低了开发者的配置负担和复杂度。

验证规则 ​

规则验证逻辑示例
adapter开启新版验证逻辑,固定为 trueadapter: true
required必填required:true → "hello"(通过)
len值长度必须等于指定数值len:5 → "hello"(通过)
maxLen值长度不超过指定数值maxLen:10 → "abc"(通过)
minLen值长度不小于指定数值minLen:3 → "ab"(失败)
pattern值需匹配正则表达式(支持字符串或RegExp对象)pattern:^\d+$ → "123"(通过)
uppercase字符串必须全大写uppercase:true → "ABC"(通过)
lowercase字符串必须全小写lowercase:true → "abc"(通过)
email需符合邮箱格式email:true → "a@b.com"(通过)
url需符合URL格式(排除mailto:)url:true → "https://example.com"
ip需符合IPv4地址格式ip:true → "192.168.1.1"(通过)
phone需符合手机号格式(支持+86前缀)phone:true → "13800138000"(通过)
min数值不小于指定值min:10 → 15(通过)
max数值不超过指定值max:100 → 50(通过)
positive必须为正数(>0)positive:true → 1(通过)
negative必须为负数(<0)negative:true → -1(通过)
integer必须为整数integer:true → 3.0(通过)
number必须为有效数字(非NaN)number:true → "123"(通过)
equal值必须等于指定值(严格匹配===)equal:"abc" → "abc"(通过)
enum值必须在指定数组中enum:[1,2,3] → 2(通过)
hasKeys对象必须包含指定键名(仅验证键存在性,不校验值)hasKeys:["id"] → {id:1}(通过)
validator自定义验证逻辑,必须调用 callback, this.api 可以拿到表单 apivalidator:(value, callback) => void;
computed按条件或公式计算结果判断,结果为假时不通过。值为空且未设置 required 时不执行computed:{group:[{field:'amount',condition:'>',value:10}]}
message错误信息message:"填写错误"
message:{default:"填写错误", min:"不能小于5位" }

注意

自定义验证中可通过 this.rule 和 this.api 获取组件和表单的相关信息,便于在验证时访问其他组件的值。

pattern 类型为 string 时,前后不能包含 / 符号,否则会导致正则表达式无效。

自定义验证中无论成功或失败,都必须执行 callback 回调函数。

常见校验示例 ​

输入的值必须大于10 ​

字符串和数字都用 min 判断数值。下面两个年龄的初始值都是 8,提交时会提示必须大于 10。

长度必须大于3 ​

min、max 按数值比较。输入框的值会先转成数字,数字输入框本身就是数字,分组表单的值是数组。编码 2 用对象分别设置 min、max 的错误信息。

自定义验证 ​

编码长度要在 3 到 5 位之间。成功和失败都要调用 callback。

结合其他字段验证 ​

两个编码必须一致。校验函数里用 this.api.getValue 读取另一个字段。

computed 条件 ​

computed 的结果为假时校验不通过。可以写成函数或条件组。条件组的运算符与组件联动相同。值为空且未设置 required 时不执行。

函数的参数是表单数据、api 和当前规则,返回 false、0 或空字符串时不通过。

条件组用 group 列出比较。每条由 field、condition、value 组成。mode 为 AND 时全部成立才通过,为 OR 时有一条成立就通过。invert: true 会把结果取反。

FormCreate 是一个开源项目,基于 MIT 许可证发布,欢迎个人和企业用户免费使用