validate.js
4.6 KB
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
const install = (Vue, vm) => {
const required = (message, trigger) => {
return {
// 自定义验证函数,见上说明
validator: (rule, value, callback) => {
if (Array.isArray(value)) {
return value.length > 0 ? true : false
} else if (typeof(value) == 'string' && value && !value.trim()) {
return value.trim() ? true : false;
} else if (typeof(value) == 'object') {
return JSON.stringify(value) != '{}' ? true : false;
} else {
return value != 0 && (typeof(value) == 'number' || value ? true : false);
}
},
message: message ? message : '必填项不能为空',
// 触发器可以同时用blur和change
trigger: trigger ? trigger : ['change', 'blur'],
}
}
const digits = {
// 自定义验证函数,见上说明
validator: (rule, value, callback) => {
// 上面有说,返回true表示校验通过,返回false表示不通过
return value ? vm.$u.test.digits(value) : true;
},
message: '请输入正整数',
// 触发器可以同时用blur和change
trigger: ['change', 'blur'],
}
//数字是否在某个范围内
const rangeNumber = function(params) {
return {
validator: (rule, value, callback) => {
return value ? vm.$u.test.range(value, params) : true;
},
message: `请输入${params[0]}~${params[1]}`,
trigger: ['change', 'blur'],
}
}
//字符串长度是否在某个范围内
const rangeLength = function(params) {
return {
validator: (rule, value, callback) => {
return value ? vm.$u.test.rangeLength(value, params) : true;
},
message: `长度在${params[0]}~${params[1]}个字符`,
trigger: ['change', 'blur'],
}
}
//字符串最大长度
const maxLehgth = function(params) {
return {
max: params,
message: `字符长度不超过${params}位`,
trigger: ['change', 'blur'],
}
}
//字母或数字
const LetterOrNumer = {
pattern: /^[0-9a-zA-Z]*$/g,
// 正则检验前先将值转为字符串
transform(value) {
return String(value);
},
message: '只能包含字母或数字'
}
const email = {
// 自定义验证函数,见上说明
validator: (rule, value, callback) => {
// 上面有说,返回true表示校验通过,返回false表示不通过
return value ? vm.$u.test.email(value) : true;
},
message: '邮箱格式不正确',
// 触发器可以同时用blur和change
trigger: ['change', 'blur'],
}
const mobile = {
validator: (rule, value, callback) => {
return value ? vm.$u.test.mobile(value) : true;
},
message: '手机号码不正确',
trigger: ['change', 'blur'],
}
const name = {
// 自定义验证函数,见上说明
validator: (rule, value, callback) => {
// 上面有说,返回true表示校验通过,返回false表示不通过
return value ? vm.$u.test.chinese(value) : true;
},
message: '姓名必须为中文',
// 触发器可以同时用blur和change
trigger: ['change', 'blur'],
}
//是否验证码
const verifyCode = function(params) {
return {
validator: (rule, value, callback) => {
return vm.$u.test.code(value, params);
},
message: `验证码不正确`,
trigger: ['change', 'blur'],
}
}
//身份证号
const idCard = {
validator: (rule, value, callback) => {
return value ? vm.$u.test.idCard(value) : true;
},
message: '身份证号不正确',
trigger: ['change', 'blur'],
}
//数值是否在某个范围内
const height = function(params) {
return {
validator: (rule, value, callback) => {
return value ? vm.$u.test.range(value, params) : true;
},
message: `身高在${params[0]}~${params[1]}cm`,
trigger: ['change', 'blur'],
}
}
//数值是否在某个范围内
const weight = function(params) {
return {
validator: (rule, value, callback) => {
return value ? vm.$u.test.range(value, params) : true;
},
message: `体重在${params[0]}~${params[1]}kg`,
trigger: ['change', 'blur'],
}
}
const qq = {
pattern: /^[1-9][0-9]{4,14}$/gim,
message: 'QQ号不正确',
trigger: ['change', 'blur'],
}
const weixin = {
pattern: /^[a-zA-Z][a-zA-Z\d_-]{5,19}$/,
message: '微信号不正确',
trigger: ['change', 'blur'],
}
// 将各个定义的接口名称,统一放进对象挂载到vm.$u.api(因为vm就是this,也即this.$u.api)下
vm.$u.cusTest = {
required,
digits,
rangeNumber,
rangeLength,
mobile,
verifyCode,
name,
idCard,
height,
weight,
maxLehgth,
qq,
weixin,
email,
};
}
export default {
install
}