Skip to content

Form 表单

基于 Element Plus Form 增强的表单组件。

表单由inputradioselectcheckbox等控件组成,用以收集、校验、提交数据。

TIP

该组件已升级为弹性布局(flex),替代了旧的浮动布局(float)。

基本用法

最基础的表单包括各种输入表单项,如inputselectradiocheckbox等。

在每一个 Form 组件中,需要使用 bk-form-item 组件作为输入项的容器,也可通过 items 属性以配置化方式定义表单结构。每个表单项支持配置 proplabel 及相关字段属性等选项。

Activity name
Activity zone
please select your zone
Activity time
-
Instant delivery
Activity type
Resources
Activity form
Activity name
Activity zone
please select your zone
Activity time
-
Instant delivery
Activity type
Resources
Activity form

提示

W3C 规范中提到:

当表单中只有一个单行文本输入框时,用户代理应将该字段中的回车视为提交表单的请求。

如需阻止该行为,可在 <bk-form> 上添加 @submit.prevent

多列布局

当垂直空间受限且表单结构较简单时,可将表单项横向排列。

设置 col-num 属性指定表单布局的列数。

Approved by
Activity zone
Activity zone
Activity time

标签对齐方式

可根据设计需求,选择不同的标签对齐方式。

可在单个表单项中单独设置 label-position,若未设置,则继承 bk-formlabel-position 配置。

label-position 属性用于设置标签对齐方式,可选值为 topleft。设置为 top 时,标签会显示在表单项的顶部。

Form Align
Form Item Align
Name
Activity zone
Activity form

表单校验

表单组件支持数据校验功能,帮助快速发现并修正输入错误。

只需为 bk-form 组件添加 rules 属性并传入校验规则,并将表单项的 prop 属性设置为需要验证的特殊键值即可。校验规则参见 async-validator

Activity name
Activity zone
Activity zone
Activity count
Activity count
Activity time
-
Instant delivery
Activity location
Activity type
Resources
Activity form

自定义校验规则

本示例展示如何自定义校验规则,实现双密码一致性验证。

此处使用 status-icon 属性,通过图标直观展示校验结果。

提示

自定义校验的回调函数必须被调用,否则会导致校验流程卡死。高级用法参考 async-validator

动态增减表单项

除了在表单组件上一次性传入所有校验规则外,也可针对单个表单项动态添加或删除校验规则。

Email
Domain0

数字类型校验

数字类型校验需要在输入框的 v-model 绑定上添加 .number 修饰符,该修饰符由 Vue 提供,用于将输入的字符串值转换为数字类型。

age

TIP

当一个表单项嵌套在另一个表单项中时,其标签宽度会被设为 0。如有需要,可在该嵌套的表单项上手动设置 label-width

尺寸控制

表单内的所有组件会默认继承表单的 size 属性,表单项也单独提供 size 属性用于控制尺寸。

若不想让某个组件继承表单/表单项的尺寸,可单独为该组件设置 size 属性覆盖继承值。


Activity name
Activity zone
please select your zone
Activity time
-
Activity type
Resources

无障碍访问

当表单项内仅包含单个输入控件(如输入框、选择器、复选框等)时,表单项的标签会自动关联到该输入控件。若包含多个输入控件,表单项会被赋予 WAI-ARIAgroup 角色,此时需要开发者自行为每个输入控件添加辅助标签。

Full Name
Your Information

Form API

Form 属性

属性名说明类型默认值
items表单项配置数组,每个项可指定类型、组件属性(componentProps)、子项等array
colNum多列表单布局的列数number1
Element Plus Form 原生属性
属性名说明类型默认值
model表单数据对象object
rules表单校验规则object
inline是否行内表单(推荐使用 col-num 属性替代)booleanfalse
label-position标签的位置,可选值为 left / right / top,设置为 leftright 时,需同时设置 label-widthenumright
label-width标签的宽度,例如 50px,支持 auto,所有直接子表单项会继承该值string / number''
label-suffix标签的后缀文本string''
hide-required-asterisk是否隐藏必填字段标签旁的红色星号booleanfalse
require-asterisk-position星号的位置,可选值为 left / rightenumleft
show-message是否显示校验错误信息booleantrue
inline-message是否将校验错误信息以行内形式展示booleanfalse
status-icon是否显示校验状态图标booleanfalse
validate-on-rule-change是否在 rules 属性变化时触发校验booleantrue
size控制表单内组件的尺寸,可选值为 large / default / smallenum
disabled是否禁用表单内所有组件,设置为 true 时会覆盖内部组件的 disabled 属性booleanfalse
scroll-to-error校验失败时,是否自动滚动到第一个错误表单项booleanfalse
scroll-into-view-options校验失败滚动到错误项时,传递给 scrollIntoView 的配置项,参考 scrollIntoViewobject / booleantrue

FormItem

继承所有 Element Plus FormItemProps 属性,并新增以下增强功能:

属性名说明类型默认值
type required表单项组件类型(例如:'input'、'select'、'radio')string
componentProps传递给底层组件的额外属性object
children用于复杂布局的嵌套表单项配置array

Form 事件

Element Plus Form 原生事件
事件名说明类型
validate表单项校验触发的事件Function

Form 插槽

Element Plus Form 原生插槽
插槽名说明子标签
default自定义默认内容FormItem

Form Exposes

Element Plus Form Exposes
名称说明类型
validate校验整个表单,接收回调函数或返回 PromiseFunction
validateField校验指定的表单项Function
resetFields重置指定的表单项,清除校验结果Function
scrollToField滚动到指定的表单项Function
clearValidate清除所有或指定表单项的校验提示Function
fields获取所有表单项的上下文array
getField获取指定表单项的上下文Function

FormItem API

FormItem 属性

Element Plus FormItem 原生属性
属性名说明类型默认值
prop表单模型字段,支持嵌套路径(如 a.b.0['a', 'b', '0']),在使用 validate / resetFields 方法时,该属性是必填的string / string[]
label标签文本string
label-position标签的位置,可选值为 left / right / top,设置为 leftright 时需指定 label-width,默认继承表单的 label-positionenum''
label-width标签的宽度,例如 50px,支持 autostring / number
required是否为必填字段,若不设置,则由校验规则自动判断boolean
rules表单项的校验规则,参考 FormItemRule,高级用法参考 async-validatorobject
error手动设置表单项的错误提示信息,设置后会立即触发校验错误状态并显示该信息string
show-message是否显示校验错误信息booleantrue
inline-message是否以行内形式展示校验错误信息booleanfalse
size控制表单项内组件的尺寸,可选值为 large / default / smallenum
for原生 label 标签的 for 属性,用于关联表单控件string
validate-status表单项的校验状态,可选值为 error / validating / success / ''enum

FormItemRule

Element Plus FormItemRule 原生配置
名称说明类型默认值
trigger校验触发方式enum

提示

若不想通过输入事件触发校验,可在对应的输入类组件(<el-input><el-radio><el-select> 等)上设置 validate-eventfalse

FormItem 插槽

Element Plus FormItem 原生插槽
插槽名说明类型
default表单项的内容
label自定义标签内容object
error自定义校验错误提示object

FormItem Exposes

Element Plus FormItem Exposes
名称说明类型
size表单项的尺寸object
validateMessage校验提示信息object
validateState校验状态object
validate校验当前表单项Function
resetField重置当前表单项,清除校验Function
clearValidate清除当前表单项的校验状态Function