type

指示type要使用的验证器。可识别的类型值为:

string:类型必须为string。type 默认是 string

1
2
3
4
5
6
7
8
// 校验
string: [
{type: 'string', message: `请输入字符串`, trigger: 'blur'}
]

<el-form-item label="测试字段" prop="string">
<el-input v-model.number="form.string" placeholder="请输入"></el-input>
</el-form-item>

number:类型必须为number

1
2
3
4
5
6
7
8
// 校验
number: [
{type: 'number', message: `请输入数字`, trigger: 'blur'}
]

<el-form-item label="测试字段" prop="number">
<el-input v-model="form.number" placeholder="请输入"></el-input>
</el-form-item>

boolean:类型必须为boolean

1
2
3
4
5
6
7
8
9
10
11
12
// 校验
boolean: [
{type: 'boolean', message: `请选择`, trigger: 'change'}
]

<el-form-item label="测试字段" prop="boolean">
<el-select v-model="form.boolean" placeholder="请选择">
<el-option label="true" :value="true"></el-option>
<el-option label="false" :value="false"></el-option>
<el-option label="字符串" :value="'zifuchuan'"></el-option>
</el-select>
</el-form-item>

integer:类型必须为 number 且为整数。

1
2
3
4
// 校验
integer: [
{type: 'integer', message: `请输入整数`, trigger: 'blur'}
]

float:类型必须为 number 且为浮点数。

1
2
3
4
// 校验
float: [
{type: 'float', message: `请输入浮点数`, trigger: 'blur'}
]

array:类型必须为数组

1
2
3
4
5
6
7
8
9
10
11
12
// 校验
array: [
{type: 'array', message: `请选择数组`, trigger: 'change'}
]

<el-form-item label="测试字段" prop="array">
<el-select v-model="form.array" placeholder="请选择">
<el-option label="数组" :value="[1,2,3]"></el-option>
<el-option label="false" :value="false"></el-option>
<el-option label="字符串" :value="'zifuchuan'"></el-option>
</el-select>
</el-form-item>

enum:值必须存在于中 enum

1
2
3
4
// 校验
enum: [
{type: 'enum', enum: ['aaa', 'bbb'], message: `不存在enum中`, trigger: 'change'}
]

url:类型必须为 url

1
2
3
4
// 校验
url: [
{type: 'url', message: `请输入正确的url`, trigger: 'change'}
]

email:类型必须为 email
method:类型必须为 function
regexp:必须是 RegExp 创建新时不会产生异常的的实例或字符串 RegExp
object:类型必须为 object
date:类型必须为 date
hex:类型必须为 hex
any:任何类型

required

required 属性为true是,该字段为必填项

1
2
3
4
// 校验
name: [
{required: true, message: `请输入`, trigger: 'blur'}
]

pattern

pattern 规则属性指示一个正则表达式的值必须匹配,才能通过验证。

1
2
3
4
// 校验
number: [
{pattern: /^[0-9]*$/, message: `请输入数字`, trigger: 'blur'}
]

min、max

规定最小长度与最大长度

1
2
3
4
// 校验
minmax: [
{min: 3, max: 8, message: '请输入3-8位', trigger: 'blur'}
]

len

指定确切长度。(如果该len属性与min和max范围属性结合使用,len则优先。)

1
2
3
4
// 校验
length: [
{len: 5, message: '请输入5位', trigger: 'blur'}
]

whitespace

验证是否只有空格

1
2
3
4
// 校验
whitespace: [
{whitespace: true, message: '只存在空格', trigger: 'blur'}
]

transform

有时有必要在验证之前转换值,以强制或以某种方式对其进行清理。为此 transform ,向验证规则添加一个功能。在验证之前,先转换属性,然后将其重新分配给源对象,以更改该属性的值。

1
2
3
4
// 校验
transform: [
{type: 'enum', enum: [2,4,6], message: `结果不存在`, trigger: ['change', 'blur'], transform(value) {return Number(value * 2)}}
]

messages

校验不通过提示

asyncValidator

可以为指定的字段自定义异步验证功能

validator

可以为指定字段自定义验证功能

1
2
3
4
5
6
7
8
9
10
11
12
let numberLengthSix = (rule, value, callback) => {
if(String(value).length > 6) {
callback('超出限制')
} else {
callback()
}
}

// 校验
numberLengthSix: [
{validator: numberLengthSix, trigger: 'blur'}
]

使用方法

model绑定对应需要校验的数据,rules绑定校验规则, prop绑定的规则名字必须和model里面的名字一致,例: ruleForm: {name: “”} 而 prop=“name” 不然不起效果

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
<template>
<div>
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" >
<el-form-item label="活动名称" prop="name">
<el-input v-model="ruleForm.name" @foucs="clearValida("name")"></el-input>
</el-form-item>
</el-form>
<div>
<el-button size="small" type="primary" @click="submitForm">确 定</el-button
</div>
</div>
</template>
<script>
export default {
data() {
//自定义校验方式
//校验正整数
var rules = (rule, value, callback) => {
if(value){
let reg1 = /^[1-9]([0-9])*$/; //正整数
if (!reg1.test(value)) {
callback("请输入正整数");
} else {
callback();
}
}
};
return {
ruleForm: {
name: "",
},
rules: {
name: [
{ required: true, message: "请输入活动名称", trigger: "blur" },
{ min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" },
{ validator: 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
//1、手机号码验证正则
{ required: true, message: '请输入手机号', trigger: 'blur' },
{ pattern:/^1[3456789]\d{9}$/, message: "手机号格式不对", trigger: "blur" },

//2、身份证验证
{ required: true, message: '请输入证件号码', trigger: 'blur' },
{ pattern: /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$)/,
message: '证件号码格式有误!',
trigger: 'blur',
},

//3、校验是否为数字
{ pattern:/^[0-9]*$/ , message:'请输入数字' ,trigger:'blur' },

//4、校验座机号
{ pattern:/^\d{3,4}\-\d{7,8}$/,message:"座机不正确,格式为:区号-座机号,例如: 07558886666",trigger:"blur"},

//5、校验是否为汉字
{ pattern:/^[\u4e00-\u9fa5]{0,}$/ ,message:"姓名格式错误,请检查",trigger:"blur" }

//6、金额校验,允许负数,两位小数
{ pattern: /(^([-]?)[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^([-]?)(0){1}$)|(^([-]?)[0-9]\.[0-9]([0-9])?$)/, message:'请输入正确的金额!' ,trigger:'blur' },

//7、金额校验,不允许负数,两位小数
{ pattern:/^\d+\.?\d{0,2}$/ , message:'请输入正确的金额!' ,trigger:'blur' },
1
2
3
4
5
6
7
8
9
10
11
12
13
//form表单统一校验
submitForm(){
this.$refs["form"].validate(validate=>{
if(validate){
//form表单校验通过,可以进行下一步操作
}
})
},
//form表单输入框获取焦点暂时清除对应的表单校验,提高用户体验
//理解:调用form表单移除校验方法,传入对应的校验名字,在input绑定focus事件
clearValida(data) {
this.$refs.form.clearValidate([data]);
}