最近闲来无事,开发了个公用的表单验证类。
1、代码:
1)正则集合:
1 |
|
2)错误信息提示集合:
1 |
|
3)校验方法集合:
1 |
|
4)FormValidator类:
1 |
|
2、使用示例
1 |
|
3、参数描述
1)实例参数:
名称(形参) | 说明 | 类型 |
---|---|---|
validateData | 要校验的提交给后端的数据 | Object |
fields | 表示校验规则,整体数据结构如下:paramKey: { paramName: ‘xx’, depends: ‘xx’, 或 depends: ()=>{ return Math.random() > 0.5; }, rules: [‘required’, ‘greater_than_or_equal_date[startDate]’] } |
Array [Object] |
callback | 校验成功的回调 | Function |
2)fields的详细说明:
名称 | 说明 | 类型 | 是否必传 |
---|---|---|---|
paramKey | 一般是校验数据{key:value}的key值,在这里必须唯一 | String | 是 |
paramName | paramKey的汉字描述 | String | 是 |
depends | 代表要进行校验的条件,返回一个布尔值,false的情况不进行校验 可以直接传递一个方法,根据方法返回的值来确定是否进行rules中所有规则的校验; 也可以传递一个字符串,但前提是必须要执行registerConditional方法进行条件注册 |
String or Function | 否 |
rules | 代表要校验的规则集合,下文有表格详细说明。如果没有传递,则不会对validateData相应的字段进行校验 | Array [String] | 否 |
4、可用规则集合
规则名称 | 规则描述 | 是否传参 | 举例 |
---|---|---|---|
required | 若要校验的值为空,返回false | 否 | required |
matches | 若要校验的值与期望的值不相等,返回false | 是 | matches[password] password代表的是validateData中的某个字段 |
valid_mobile | 若要校验的值不是手机号码,返回false | 否 | valid_mobile |
valid_email | 若要校验的值不是电子邮箱地址,返回false | 否 | valid_email |
valid_integerDecimal | 若要校验的值不是整数、1位或2位小数,返回false | 否 | valid_integerDecimal |
alpha | 若要校验的值不是英文字母(不区分大小写)组成的,返回false | 否 | alpha |
alpha_numeric | 若要校验的值不是由字母或数字组成的,返回false | 否 | alpha_numeric |
alpha_dash | 若要校验的值存在字母、数字、下划线和破折号之外的字符,返回false | 否 | alpha_dash |
numeric | 若要校验的值不是整数,返回false 提示语是“请填写数字” |
否 | numeric |
integer | 同上 提示语是“请填写整数” |
否 | integer |
decimal | 若要校验的值不是小数(不限制位数),返回false | 否 | decimal |
decimalTwoPoint | 若要校验的值不是2位小数,返回false | 否 | decimalTwoPoint |
is_natural_no_zero | 若要校验的值不是非0自然数,返回false | 否 | is_natural_no_zero |
valid_ip | 若要校验的值不是ip地址,返回false | 否 | valid_ip |
valid_base64 | 若要校验的值不是base64位格式数据,返回false | 否 | valid_base64 |
valid_url | 若要校验的值不是url地址,返回false | 否 | valid_url |
min_length | 若要校验的值的长度比某个数字小,返回false | 是 | min_length[20] 只能与数字比较 |
max_length | 若要校验的值的长度比某个数字大,返回false | 是 | max_length[200] 只能与数字比较 |
exact_length | 若要校验的值的长度不等于某个数字,返回false | 是 | exact_length[200] 只能与数字比较 |
greater_than | 若要校验的值的长度不大于某个值(整数和小数均可),返回false | 是 | greater_than[3.14] 只能与数字比较 |
less_than | 若要校验的值的长度不小于某个值(整数和小数均可),返回false | 是 | less_than[3.14] 只能与数字比较 |
greater_than_date | 若要校验的值不晚于某个日期,返回false | 是 | greater_than_date[startDate] startDate代表的是validateData中的某个字段 也可以直接传递“today”代表与当前日期相比较 |
less_than_date | 若要校验的值不早于某个日期,返回false | 是 | less_than_date[startDate] startDate代表的是validateData中的某个字段 也可以直接传递“today”代表与当前日期相比较 |
greater_than_or_equal_date | 若要校验的值晚于某个日期,返回false | 是 | greater_than_or_equal_date[startDate] startDate代表的是validateData中的某个字段 也可以直接传递“today”代表与当前日期相比较 |
less_than_or_equal_date | 若要校验的值早于某个日期,返回false | 是 | less_than_or_equal_date[startDate] startDate代表的是validateData中的某个字段 也可以直接传递“today”代表与当前日期相比较 |
5、扩充方法:
FormValidator类除了validateForm,还对外提供了三个方法:
1)setMassage: 自定义某规则的错误提示语。
2)registerCallback: 自定义某个规则。
示例:
1 |
|
3)registerConditional: 注册某个是否进行校验的条件,与depends配合使用。
1 |
|
或者写成:
1 |
|
参考文档: