Form 表单
文档地址: https://vant-contrib.gitee.io/vant/#/zh-CN/form
用于输入与校验, 可以包含 输入框, 单选框, 复选框, 文件上传等类型. 需要与 Field 配合使用.
表单使用的重点是:
- 收集表单项数据
- 重点是
Field组件的使用 - 表单校验
基本用法
基本用法:
<van-form @submit="...">
<van-cell-group inset>
<van-field v-model="name"
name="name"
label="用户名"
placeholder="用户名"
require="auto"
:rules="[{required: true, message: '必须输入用户名'}]">
</van-field>
<van-field v-model="pwd"
type="password"
name="pwd"
label="密码"
placeholder="密码"
require="auto"
:rules="[{required: true, message: '必须输入密码'}]">
</van-field>
</van-cell-group>
<div style="margin: 1rem;">
<van-button block type="primary" native-type="submit">提交</van-button>
</div>
</van-form>
提交后, 并校验成功会触发 submit 事件, 并在事件中提供输入的数据
const onSubmitHandler = (values: Record<string, any>) => {
// values 即为表单中的数据
}
该事件与传统表单提交不同, 可以简单看成是 return false 的传统表单提交事件.
提交表单校验失败会触发 failed 事件.
校验
在 Field 组件上使用 rules 属性, 该属性的类型与 AntdVue 中类似, 为 Rule[] 类型. 一般必填验证会与 required="auto" 连用.
Rule 数据结构
| 键名 | 说明 | 类型 |
|---|---|---|
required | 必填. 当值为空 (空字符串, 空数组, false, undefined, null) 时验证失败. | boolean |
message | 错误提示, 支持使用函数来动态返回提示. | `string |
validator | 通过函数进行校验. 可以返回 Promise. | `(value, rule)=>boolean |
patterm | 通过正则表达式进行校验. | RegExp |
trigger | 触发机制, 优先级高于 Form 中设置的 validate-trigger. 可取值为: onChange, onBlur, onSubmit | `string |
formatter | 格式化函数, 将表单值转换后进行校验. | (value, rule)=>any |
validateEmpty | 设置 validator 和 patterm 是否对空值进行校验. 默认为 true | boolean |
常用属性
label-width设置表单label宽度. 默认单位px
与其他表单组件结合使用
Field 作为输入框, 以及表单项来使用.
- 与
Field输入框结合. - 与
Switch结合. 使用Field的input插槽放置Switch. - 与
Checkbox结合. 使用Field的input插槽, 放置CheckboxGroup, 然后横向放置复选框 (direction="horizontal"). - 与
Radio结合使用. 用法与Checkbox一样. - 与
Stepper步进器结合使用. 与Switch用法一样. - 与
Rate评分控件结合使用, 与Switch用法一样. - 与
Slider滑块控件结合使用, 与Switch用法一样. - 与
Uploader文件上传控件一起使用. 与Switch用法一样. - 与选择器组件一起使用, 例如
Picker,DatePicker,TimePicker,Calendar等. 将Field设置为readonly, 然后使用Popup组件包裹对应的Picker来组合使用.