主题
Form 表单
使用
表单包含 输入框
, 单选框
, 下拉选择
, 多选框
等用户输入的组件。 使用表单,您可以收集、验证和提交数据。
典型表单
最基础的表单包括各种输入表单项,比如input
、select
、radio
、checkbox
等。
在每一个 form
组件中,你需要一个 form-item
字段作为输入项的容器,用于获取值与验证值。
TIP
W3C 标准定义:
当一个表单中只有一个单行文本输入字段时, 浏览器应当将在此字段中按下 Enter (回车键)的行为视为提交表单的请求。 如果希望阻止这一默认行为,可以在 <k-form> 标签上添加 @submit.prevent。
行内表单
当垂直方向空间受限且表单较简单时,可以在一行内放置表单。
通过设置 inline
属性为 true
可以让表单域变为行内的表单域。
对齐方式
根据你们的设计情况,来选择最佳的标签对齐方式。
表单校验
Form
组件允许你验证用户的输入是否符合规范,来帮助你找到和纠正错误。
自定义校验规则
这个例子中展示了如何使用自定义验证规则来完成密码的二次验证。
本例还使用 status-icon
属性为输入框添加了表示校验结果的反馈图标。
TIP
自定义的校验回调函数必须被调用。 校验规则参见 async-validator.
添加/删除表单项
除了一次通过表单组件上的所有验证规则外. 您也可以动态地通过验证规则或删除单个表单字段的规则。
数字类型验证
数字类型的验证需要在 v-model
处加上 .number
的修饰符,这是 Vue
自身提供的用于将绑定值转化为 number
类型的修饰符。
尺寸控制
表单中的所有子组件都继承了该表单的 size
属性。 同样,form-item
也有一个 size
属性。
如果希望某个表单项或某个表单组件的尺寸不同于 Form
上的 size
属性,直接为这个表单项或表单组件设置自己的 size
属性即可。
隐藏label
如果不需要显示 label
标签,可以设置 showLabel
属性为 false
, 如果需要隐藏单独的 label
标签,可以在Item上设置showLabel
属性为 false
。
隐藏冒号
如果不需要显示冒号,可以设置 showColon
属性为 false
。
嵌套item
嵌套form
API
Form Props
参数名 | 描述 | 类型 | 默认值 |
---|---|---|---|
model | 表单数据对象 | object | - |
rules | 表单验证规则 | object | - |
inline | 行内表单模式 | boolean | false |
label-position | 表单域标签的位置,当设置为left或right时,则也需要设置label-width属性 | enum | right |
label-width | 标签的长度,作为Form直接子元素的form-item会继承该值 | string | number | '' |
label-suffix | 表单域标签的后缀内容 | string | - |
hide-required-asterisk | 隐藏必填项的星号 | boolean | false |
require-asterisk-position | 必填项星号的位置 | enum | left |
show-message | 是否显示校验错误信息 | boolean | true |
inline-message | 是否以行内形式展示校验信息 | boolean | false |
status-icon | 是否在输入框中显示校验结果反馈图标 | boolean | false |
validate-on-rule-change | 是否在 rules属性改变后立即触发一次验证 | boolean | true |
size | form尺寸 | enum | base |
disabled | 是否禁用该表单内的所有组件。如果设置为true, 它将覆盖内部组件的disabled属性 | boolean | false |
scroll-to-error | 当校验失败时,滚动到第一个错误表单项 | boolean | false |
scroll-into-view-options | 是否显示右上角当校验有失败结果时,滚动到第一个失败的表单项目 | boolean | object | - |
showColon | 是否显示冒号 | boolean | false |
showLabel | 是否显示label | boolean | true |
auto-focus-first | 是否自动聚焦第一个 input 或 textarea 元素 | boolean | false |
auto-focus-to | 自动聚焦的目标input元素,支持元素选择器、ref等参数,如果传入的元素不为input或textarea,则聚焦到其后代的第一个input元素 | string | Element | Ref<ComponentInstance> | - |
Form Events
事件名 | 描述 | 类型 |
---|---|---|
validate | 任一表单项被校验后触发 | Function |
Form Methods
方法名 | 描述 | 类型 |
---|---|---|
validate | 对整个表单的内容进行验证。接收一个回调函数或返回Promise | Function |
validateField | 验证表单具体的某个字段 | Function |
resetFields | 重置该表单项,将其值重置为初始值,并移除校验结果 | Function |
scrollToField | 滚动到指定的字段 | Function |
clearValidate | 清理某个字段的表单验证信息 | Function |
fields | 获取所有字段的context | array |
Form Slots
插槽名 | 描述 | 参数 |
---|---|---|
default | 自定义默认内容 | - |
FormItem Props
参数名 | 描述 | 类型 | 默认值 |
---|---|---|---|
prop | 表单数据字段名 | string | string[] | - |
label | 标签文本 | string | - |
label-position | 表单域标签的位置,当设置为left或right时,则也需要设置label-width属性,默认会继承Form的label-position | enum | - |
label-width | 标签宽度 | string | number | - |
required | 是否为必填项 | boolean | - |
rules | 表单验证规则 | object | - |
error | 表单域验证错误时的提示信息。设置该值会导致表单验证状态变为 error,并显示该错误信息 | string | - |
show-message | 是否显示校验错误信息 | boolean | true |
inline-message | 是否在行内显示校验信息 | boolean | string | '' |
size | 表单域大小 | enum | base |
validate-status | 表单域验证状态 | enum | - |
for | form原生属性 | string | - |
showLabel | 是否显示label | boolean | true |
showColon | 是否显示label | boolean | false |
FormItem Methods
方法名 | 描述 | 类型 |
---|---|---|
validateMessage | 校验消息 | object |
validateState | 校验状态 | object |
validate | 验证表单项 | Function |
resetField | 对该表单项进行重置,将其值重置为初始值并移除校验结果 | Function |
clearValidate | 移除该表单项的校验结果 | object |
FormItem Slots
插槽名 | 描述 | 参数 |
---|---|---|
default | 表单的内容 | - |
label | 标签位置显示的内容 | object |
error | 验证错误信息的显示内容 | object |