验证规则
Framework:
概述
Schema FormX 提供了灵活的验证机制,支持内置验证、自定义验证函数和异步验证。本章节将详细介绍验证规则的使用方法。
内置验证
必填验证
通过 required 属性设置字段为必填:
按字段类型的空值判断规则
必填验证会根据字段类型判断空值,不同类型的空值判断规则如下:
验证逻辑源码:
注意事项:
boolean类型的false不是空值,必填验证会通过number类型的0不是空值,必填验证会通过- 空字符串
''对所有类型都是空值 hidden: true的字段仍会参与验证 —— 如果隐藏字段设置了required: true,仍会触发验证错误。如需跳过隐藏字段的验证,请使用条件required或自定义validator- 如果需要更复杂的必填判断,可以使用自定义验证器
- 错误消息:必填验证的错误消息为中文硬编码的
${label}不能为空,不可自定义。如果需要自定义错误消息(如英文提示),请使用自定义validator函数替代required属性。国际化支持列入 TODO
字段默认值
表单初始化时,会根据字段类型自动设置默认值:
可以通过 defaultData 属性覆盖默认值:
自定义验证函数
基础用法
通过 validator 属性自定义验证逻辑:
验证函数参数
验证函数接收以下参数:
返回值
undefined:验证通过string:验证失败,返回错误信息
验证规则示例
常用验证模式
长度验证
格式验证
范围验证
跨字段验证
异步验证
基础用法
验证函数可以返回 Promise:
异步验证示例
验证时机
自动验证
默认情况下,验证会在以下时机自动触发:
- 字段值变化时:当用户修改字段值后,自动验证该字段
- 依赖联动后:当依赖字段变化触发联动时,会同时验证相关字段
手动验证
可以通过表单实例的 validate() 方法手动触发验证:
validate() 方法详解
validate() 方法可以手动触发表单验证:
使用场景:
异常处理
验证器抛出的异常会被自动捕获并转换为错误信息:
注意:
onChange回调仅返回{ data, name, value },不包含errors。如需实时获取验证结果,请调用validate()方法。
自定义错误样式
可以通过 Layout 配置自定义错误提示的样式:
验证规则组合
多个验证规则
可以为一个字段配置多个验证规则:
验证优先级
验证按以下顺序执行:
- 必填验证(required)
- 类型验证(type)
- 自定义验证(validator)
最佳实践
- 清晰的错误信息:提供明确、友好的错误提示
- 即时反馈:在用户输入时提供实时验证反馈
- 避免过度验证:只验证必要的字段
- 异步验证优化:对于异步验证,考虑添加防抖或节流
- 国际化支持:错误信息支持多语言