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
// // example
// // 普通input框必输, blur 时触发校验
// [Validator.RequiredBlur()]
// // 普通 select, radio, datepicker 必输, change 时触发校验
// [Validator.RequiredChange()]
// // 固定字符长度校验
// [
// Validator.RequiredBlur(),
// Validator.StrLength(4)
// ]
// // 字符长度范围校验
// [
// Validator.RequiredBlur(),
// Validator.StrRange(4,8)
// ]
// // 数字位数范围校验
// [
// Validator.RequiredBlur(),
// // 整数位不超过 5位,小数位不超过2位
// Validator.CurrencyRange(5, 2)
// ],
// // 特殊校验
// [
// Validator.RequiredBlur(),
// Validator.func(() => {
// return true
// })
// ]
export default {
CurrencyRange (count, precision) {
let reg = new RegExp(`^[\\d]{1,${count}}[\\.]{0,1}[\\d]{0,${precision}}$`, 'g')
return {
message: `数字整数位不得超过${count}位,小数位不得超过${precision}`,
pattern: reg,
trigger: 'change'
}
},
RequiredBlur (flag = true) {
return {
required: flag,
message: '该项为必输项',
trigger: 'blur'
}
},
RequiredChange (flag = true) {
return {
required: flag,
message: '该项为必输项',
trigger: 'change'
}
},
StrRange (min, max, trigger = 'blur') {
return {
min: min,
max: max,
message: `字符串长度为${min}-${max}位`,
trigger: trigger
}
},
StrLength (length, trigger = 'blur') {
return {
len: length,
message: `字符串长度需为${length}`,
trigger: trigger
}
},
func (judgeFunc, trigger = 'change') {
return {
async validator(rule, value, callback) {
let res = await judgeFunc()
if (res == true) {
callback()
} else {
callback(new Error(res))
}
},
trigger: trigger
}
}
}