Form 表单校验 
概述
Form 表单校验,提供了常用的表单校验方法,支持传入自定义校验方法,自带错误消息提示。
# 支持平台
| App-vue | App-Nvue | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 | H5 | PC | 快手小程序 | 钉钉小程序 |
|---|---|---|---|---|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
# 引入
以下介绍两种常用的引入方式。
第一种:在页面中引用、注册
import fuiForm from "@/components/firstui/fui-form/fui-form.vue"
export default {
components:{
fuiForm
}
}
1
2
3
4
5
6
2
3
4
5
6
第二种:easycom组件规范
传统vue组件,需要安装、引用、注册,三个步骤后才能使用组件。easycom将其精简为一步。
First UI easycom配置请查看 快速上手。
如果不了解easycom,可先查看 官网文档 (opens new window)。
# 代码演示
部分示例演示,完整使用请参考示例程序以及文档API。
基础使用
通过 ref 属性来注册组件引用信息。注册完成后,我们可以通过this.$refs.form访问到对应的组件实例,并调用上面的实例方法。
<fui-form ref="form">
<fui-input required label="姓名" borderTop placeholder="请输入姓名" v-model="formData.name"></fui-input>
<fui-input required label="手机号" placeholder="请输入手机号码" v-model="formData.mobile"></fui-input>
<view class="fui-btn__box">
<fui-button text="Submit" bold @click="submit"></fui-button>
</view>
</fui-form>
1
2
3
4
5
6
7
2
3
4
5
6
7
//校验规则
const rules = [{
name: "name",
rule: ["required"],
msg: ["请输入姓名"]
}, {
name: "mobile",
rule: ["required", "isMobile"],
msg: ["请输入手机号", "请输入正确的手机号"]
}];
//表单data数据
formData: {
name: '',
mobile: ''
}
//methods
submit() {
console.log(this.formData)
this.$refs.form.validator(this.formData, rules).then(res => {
console.log(res)
if (res.isPassed) {
this.fui.toast('校验通过!')
}
}).catch(err => {
console.log(err)
})
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# Slots
| 插槽名称 | 说明 |
|---|---|
| default | 组件内部内容,由多个表单组件组成 |
# Props
| 属性名 | 类型 | 说明 | 默认值 | 平台差异说明 |
|---|---|---|---|---|
| model V2.1.0+ | Object | 表单数据,格式 {key:value,key:value},结合FormItem组件校验时必传 | { } | - |
| padding | Array | 表单外层padding值(上,右,下,左),同css顺序,如:['32rpx','32rpx'] | [ ] | - |
| show | Boolean | 是否显示校验错误信息,设置false时,可结合formItem组件显示校验信息 | true | - |
| disabled | Boolean | 是否禁用该表单内的所有组件,透明遮罩层 | false | - |
| top | Number, String | 错误提示框top值,单位:px | 0 | H5端默认为44(px),如果未使用默认导航栏,需要将top值设置为0 |
| left | Number, String | 错误提示框left值,单位:rpx | 24 | - |
| right | Number, String | 错误提示框right值,单位:rpx | 24 | - |
| background | String | 错误提示框背景色 | #FF2B2B | 非Nvue端默认值为空,可通过css变量(--fui-color-danger)改变背景颜色 |
| size | Number,String | 错误提示文本字体大小,单位rpx | 28 | - |
| color | String | 错误提示文本字体颜色 | #fff | - |
| radius | Number, String | 错误提示框圆角值,单位rpx | 16 | - |
| duration | Number | 错误提示框单次显示时间,单位ms | 2000 | - |
| labelSize V1.8.0+ | Number, String | FormItem 组件标题字体大小,单位rpx,默认使用全局设置值 | 0 | - |
| labelColor V1.8.0+ | String | FormItem 组件标题字体颜色 | #333 | - |
| labelWidth V1.8.0+ | Number, String | FormItem 组件label宽度,单位rpx,默认使用全局设置值 | 0 | - |
| labelAlign V1.9.0+ | String | FormItem 组件label对齐方式,可选值:left,right | left | - |
| labelWeight V1.9.8+ | Number,String | FormItem 组件label字重,同font-weight,默认使用全局设置值 | 0 | - |
| asteriskColor V1.8.0+ | String | FormItem 组件星号颜色 | #FF2B2B | - |
| asteriskPosition V1.9.0+ | String | FormItem 组件星号位置,可选值:left,right | left | - |
| errorPosition V2.1.0+ | Number,String | FormItem 组件错误提示定位方式方式:1-absolute 2-relative | 1 | - |
| errorAlign V2.1.0+ | String | FormItem 组件错误提示显示对齐方式,可选值:left、center、right | center | - |
# Events
| 事件名 | 说明 | 回调参数 |
|---|---|---|
| - | - | - |
# Methods
通过 ref 属性来注册组件引用信息。注册完成后,我们可以通过this.$refs.XXX访问到对应的组件实例,并调用上面的实例方法。
| 方法名 | 说明 | 传入参数 | 返回参数 |
|---|---|---|---|
| validator | 表单验证方法 | model : Object 表单数据rules : Array 校验规则数据checkAll : 是否校验所有元素 | { isPassed : 是否验证通过 errorMsg : 错误消息 } |
| validateField V2.2.0+ | 验证具体的一个或多个字段 | props : Array/String 字段model : Object 表单数据rules : Array 校验规则数据 | { isPassed : 是否验证通过 errorMsg : 错误消息 } |
| clearValidate V2.2.0+ | 清除校验错误信息,仅结合FormItem组件显示校验信息时有效 | props : Array 或 String 字段 | - |
| resetFormItemParam V2.1.0+ | 通知FormItem组件重置props参数 | - | - |
| switchRealTimeValidator V2.1.0+ | 通知FormItem组件开启或关闭实时校验,结合FormItem组件校验时有效 | isOpen : Boolean 是否开启实时校验rules : Array 校验规则数据 | - |
//方法及参数详细说明
/*
单校验方法参数详细说明
@param model {Object} 表单数据对象,传null则使用属性model值
@param rules {Boolean} 表单验证规则,当传null 或空数组时使用FormItem组件内rules(V2.2.0+支持)
@param checkAll {Boolean} 是否校验所有元素 (V1.7.0+ 支持),注意:结合FormItem组件显示校验提示时必须传true
*/
validator: function(model, rules, checkAll = false)
/*
=======================
model:Object 表单数据,格式 {key:value,key:value}
rules:Array<Object> 校验规则数据,格式 [{name:value,rule:[],msg:[],validator:[]}]
-------------------
name:String,元素的名称,与model中key一致
rule:Array<String> ,内置的校验方法名称集合,详细见下方说明
msg:Array<String>,对应rule规则方法的错误提示信息
validator:Array<Object>,自定义校验方法集合,格式 [{msg:'出错后提示信息',method:Function 校验法法}]
-----------
method:校验方法约定必须返回 true 或 false 作为校验结果
checkAll:Boolean 是否校验所有元素并返回所有错误信息,结合FormItem组件显示校验提示时必须传true。(V1.7.0+ 支持)
=======================
*/
// rule 内置校验方法名称详细说明。组合使用,如:['required','isMobile']
/*
=======================
required:必填项。非必填情况下,如果值为空则不进行校验
isMobile:是否为手机号码
isEmail:是否为邮箱
isCarNo:是否为车牌号
isIdCard:是否为身份证号
isAmount:是否为金额,允许保留两位小数
isNumber:是否为数字
isChinese:是否全为中文
isNotChinese:是否不包含中文,可以有特殊字符
isEnglish:是否为英文
isEnAndNo:是否为英文和数字组合 4~30 位
isEnOrNo:只包含英文或者数字
isSpecial:是否有特殊字符,若有则返回false
isEmoji:是否有表情符号,若有则返回false
isDate:是否为日期:2021-08-09
isUrl:是否为URL地址
isSame:与某个key值是否相同,传值:'isSame:key',不相同则返回false
range:数值范围,传值:'range:[1,9]'
minLength:最小长度,传值:'minLength:Number',如:'minLength:1'
maxLength:最大长度,传值:'maxLength:Number',如:'maxLength:149'
isKeyword:是否包含关键词,多个以英文逗号分隔,包含则返回false。传值:'isKeyword:key1,key2'
=======================
*/
/**
* 验证具体的一个或多个字段(V2.2.0+)
* @param {Array<string> | String} props 字段key,传值格式如:'name' 或 ['name','mobile']
* @param {Object} model 表单数据对象,传null则使用属性中model值
* @param {Array} rules 表单验证规则,当传null 或空数组时使用FormItem组件内rules
*/
validateField(props, model, rules)
/**
* 清除校验错误信息,仅结合FormItem组件显示校验信息时有效(V2.2.0+)
* @param {Array<string> | String} props 字段key,不传则清除所有校验信息,传值格式如:'name' 或 ['name','mobile']
*/
clearValidate(props = [])
/*
通知FormItem组件重置props参数 [V2.1.0+]
*/
resetFormItemParam: function()
/*
通知FormItem组件开启或关闭实时校验,结合FormItem校验时有效(开启时,当前item项内容改变即校验) [V2.1.0+]
@param isOpen {Boolean} 是否开启实时校验
@param rules {Array} 表单验证规则,数据同上validator方法中rules,当isOpen为true时必传
*/
switchRealTimeValidator: function(isOpen, rules = [])
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
TIP V2.1.0+
组件校验信息默认使用顶部弹出方式显示,当结合FormItem组件显示错误信息需要注意:
fui-form-item组件 必须设置prop属性fui-form组件必须设置model属性,且show属性必须设为falsefui-form组件validator方法第三个参数必须传true- 当 属性
errorPosition值设置为1时,注意控制提示内容文本长度,建议不要超过一行,开发时请自行注意,若提示内容过长请将属性值设置为2