Form 表单
用于数据录入、校验,支持输入框、单选框、复选框、文件上传等类型,需要与 Field 输入框 组件搭配使用。
基础用法
在表单中,每个 Field 组件 代表一个表单项,使用 Field 的 rules 属性定义校验规则。
校验规则
通过 rules 定义表单校验规则,所有可用字段见下方表格。
API
Form 属性
Rule 数据结构
使用 Field 的 rules 属性可以定义校验规则,可选属性如下:
键名 | 说明 | 类型 |
---|---|---|
required | 是否为必选字段,当值为空值时(空字符串、空数组、false 、undefined 、null ),校验不通过 | Boolean |
message | 错误提示文案,可以设置为一个函数来返回动态的文案内容 | `string |
validator | 通过函数进行校验,可以返回一个 Promise 来进行异步校验 | `(value, rule) => boolean |
trigger | 设置本项规则的触发时机,优先级高于 Form 组件设置的 validate-trigger 属性,可选值为 onChange 、onBlur 、onSubmit | ` string |
pattern | 通过正则表达式进行校验,正则无法匹配表示校验不通过 | RegExp |
formatter | 格式化函数,将表单项的值转换后进行校验 | (value, rule) => any |
validateEmpty | 设置 validator 和 pattern 是否要对空值进行校验,默认值为 true ,可以设置为 false 来禁用该行为 | Boolean |
validate-trigger 可选值
通过 validate-trigger
属性可以自定义表单校验的触发时机。
值 | 说明 |
---|---|
onSubmit | 表单提交时触发校验 |
onBlur | 输入框失去焦点时触发校验 |
onChange | 输入框值改变时触发校验 |
事件
事件明 | 说明 | 回调参数 |
---|---|---|
submit | 表单提交时触发 | values: object |
failed | 表单校验失败时触发 | errorInfo: { values: object, errors: object[] } |
方法
通过 ref 可以获取到 Form 实例并调用实例方法,详见组件实例方法。
方法名 | 说明 | 参数 | 返回值 |
---|---|---|---|
submit | 触发表单提交 | - | - |
getValues | 获取表单项的值 | - | Record<string, unknown> |
validate | 验证表单,支持传入一个或多个 name 来验证单个或部分表单项,不传入 name 时,会验证所有表单项 | `name?: string | string[]` |
resetValidation | 重置表单项的验证提示,支持传入一个或多个 name 来重置单个或部分表单项,不传入 name 时,会重置所有表单项 | `name?: string | string[]` |
getValidationStatus | 获取所有表单项的校验状态,状态包括 passed、failed、unvalidated | - | Record<string, FieldValidationStatus> |
scrollToField | 滚动到对应表单项的位置,默认滚动到顶部,第二个参数传 false 可滚动至底部 | name: string, alignToTop: boolean | - |
Field 字段属性
Attribute | Description | Type | Default |
---|---|---|---|
name | 表单项名称 | String | - |
label | 表单项标签 | String | - |
placeholder | 表单项占位符 | String | - |
value | 表单项值 | Any | - |
type | 表单项类型,可选值为text number password url email tel textarea switch checkbox checkbox-group radio radio-group stepper rate slider upload | String | text |
required | 是否必填 | Boolean | false |
disabled | 是否禁用表单项 | Boolean | false |
readonly | 是否只读表单项 | Boolean | false |
rules | 表单项校验规则,具体见下方表格 | Object | - |
maxlength | 最大输入长度 | Number | - |
minlength | 最小输入长度 | Number | - |
min | 最小值 | Number | - |
max | 最大值 | Number | - |
step | 步长 | Number | - |
pattern | 正则表达式 | String | - |
validator | 自定义校验函数 | Function | - |
formatter | 自定义格式化函数 | Function | - |
clearable | 是否显示清除按钮 | Boolean | false |
size | 表单项尺寸,可选值为large medium small | String | - |
label-width | 表单项标签宽度,默认单位为px | String | - |
label-align | 表单项标签对齐方式,可选值为left right | String | left |
show-message | 是否显示校验错误信息 | Boolean | true |
validate-trigger | 触发表单校验的时机,可选值为onBlur onChange | String | onBlur |
Field 插槽
Name | Description | SlotProps |
---|---|---|
default | 表单项内容 | - |