1Introduction
- description:顺序的、同异步的数据的表单过滤及验证
- author:ydr.me
- create:2016-08-17 10:40
- update:2016-08-17 10:40
- github:
https://github.com/blearjs/blear.classes.validation
2Example
var Validation = require('blear.class.validation');
var va = new Validation();
va
.field('username')
.type('string')
.required()
.minLength(4)
.maxLength(12);
va.validate({
username: 'abcdef'
}, function(err) {
// ...
});
3Static
3.1.defaults
3.1.1.defaults.skipInvalid
- 类型:
Boolean - 说明:是否跳过非法验证继续后面的验证
- 默认:
falsefalse:出错就不再继续验证(最多只可能一个错误结果)true:出错继续验证后面的数据(可能会有多个错误结果)
3.1.2.default.override
- 类型:
Boolean - 说明:表单验证的数据是否可以被验证规则覆盖,比如 trim 操作
- 默认:
true
3.2.rule(rule): validator
获取静态规则。
3.2.1rule
- 类型:
string - 说明:规则名称,包含的规则有:
equalmaxmaxLengthminminLengthpatternrequiredtrimtype
3.3.rule(rule, validator)
自定义静态规则。
3.3.1rule
- 类型:
string - 说明:规则名称
3.3.2validator
- 类型:
Function(value) | Function(value, next) - 说明:验证函数
- 同步函数
Validation.rule('a', function(value) { return new Error('巴拉巴拉'); }); - 异步函数
Validation.rule('b', function(value, next) { ajax(function() { next(new Error('balabala')); }); });
- 同步函数
4Prototype
原型属性、方法
4.1#filed(name, alias): this
指定字段。
va.field('username', '用户名');
4.1.1name
- 类型:
String - 说明:字段
4.1.2alias
- 类型:
String - 说明:别名
4.2#enable(enabing): this
指定当前字段是否有效。使用场景是:
- 根据用户名判断当前用户是否可用
- 用户名和邮箱只选其一
4.2.1enabing
- 类型:
Boolean | function(value) | function(value, next) - 说明:表达当前字段是否需要验证
- 直接判断
va.field('a').enable(true); - 同步函数
va.field('b').enable(function(value) { return true; }); - 异步函数
va.field('c').enable(function(value, next) { ajax(function() { next(true); }); });
- 直接判断
4.3#rule(rule): validator
返回实例级别的验证规则。
4.3.1rule
- 类型:
String - 说明:规则名称
4.4#rule(rule, validator): this
自定义实例级别的验证规则。
4.4.1rule
- 类型:
String - 说明:规则名称
4.4.2validator
- 类型:
Function(value) | Function(value, next) - 说明:验证函数
- 同步函数
va.rule('a', function(value) { return new Error('巴拉巴拉'); }); - 异步函数
va.rule('b', function(value, next) { ajax(function() { next(new Error('balabala')); }); });
- 同步函数
4.5#constrain(rule): this
使用已经定义好的规则,包含静态规则、实例规则。
4.5.1rule
- 类型:
string - 说明:规则
4.6#constrain(rule, limit): this
使用已经定义好的规则,包含静态规则、实例规则。
4.6.1rule
- 类型:
string - 说明:规则
4.6.2limit
- 类型:
string - 说明:规则值
4.7#constrain(rule, limit, message): this
使用已经定义好的规则,包含静态规则、实例规则。
4.7.1rule
- 类型:
string - 说明:规则
4.7.2limit
- 类型:
string - 说明:规则值
4.7.3message
- 类型:
string - 说明:自定义消息,重写规则的默认消息
4.8#trim(): this
去除当前验证值的左右空白。
4.9#type(type, [message]): this
验证字段类型。
4.9.1type
- 类型:
String | Array - 说明:类型,可以是一个类型,也可以是类型数组(比如一个字段可以是布尔值类型、
也可以是数值类型,那么可以写
['boolean', 'number']),内置以下类型:string:字符串类型number:数值类型boolean:布尔值类型array:数组类型object:对象类型function:函数类型
4.10#format(format, [message]): this
验证字段格式。
4.10.1format
- 类型:
String | Array - 说明:格式,可以是一个格式,也可以是格式数组(比如一个字段可以是手机号或者是邮箱,
那么可以写
['mobile', 'email']),内置以下格式:mobile:手机号格式email:邮箱格式numerical:数值格式digital:数字格式integer:整数格式url、http:网络地址格式idNo:身份证格式(大陆 18 位)
4.10.2message
- 类型:
string - 说明:重写消息
- 默认:
xx 必须是字符串格式等
4.11#required([message]): this
必填。
4.11.1message
- 类型:
string - 说明:重写消息
- 默认:
xx 不能为空
4.12#minLength(minLength, [message]): this
最小长度(含)。
4.12.1minLength
- 类型:
number - 说明:最小长度
4.12.2message
- 类型:
string - 说明:重写消息
- 默认:
xx 不能少于 yy 个长度
4.13#length(length, [message]): this
指定长度(含)。
4.13.1length
- 类型:
number - 说明:指定长度
4.13.2message
- 类型:
string - 说明:重写消息
- 默认:
xx 必须是 yy 个长度
4.14#maxLength(maxLength, [message]): this
最大长度(含)。
4.14.1maxLength
- 类型:
number - 说明:最大长度
4.14.2message
- 类型:
string - 说明:重写消息
- 默认:
xx 不能超过 yy 个长度
4.15#min(min, [message]): this
最小值(含)。
4.15.1min
- 类型:
number - 说明:最小值
4.15.2message
- 类型:
string - 说明:重写消息
- 默认:
xx 不能小于 yy
4.16#max(max, [message]): this
最大值(含)。
4.16.1max
- 类型:
number - 说明:最大值
4.16.2message
- 类型:
string - 说明:重写消息
- 默认:
xx 不能大于 yy
4.17#equal(name, [message]): this
等于某个字段,如确认密码等于密码。
4.17.1name
- 类型:
string - 说明:字段
4.17.2message
- 类型:
string - 说明:重写消息
- 默认:
xx 必须与 yy 相同
4.18#pattern(pattern, [message]): this
自定义正则表达式。
4.18.1pattern
- 类型:
RegExp - 说明:正则
4.18.2message
- 类型:
string - 说明:重写消息
- 默认:
xx 不合法
4.19#child(validation): this
添加嵌套的表单验证。
4.19.1validation
- 类型:
Validation - 说明:Validation 实例
var va1 = new Validation();
var va2 = new Validation();
var va3 = new Validation();
var data = {
a/*va1*/: {
b/*va2*/: {
c/*va3*/: 1 /*要验证这个字段*/
}
}
};
va1.field('a').child(va2);
va2.field('b').child(va3);
va3.field('c').required().type('number').min(1).max(10);
va1.validate(data, function (err) {
// ...
});
4.20#validate(data, callback(err)): undefined
验证数据
4.20.1data
- 类型:
Object - 说明:待验证的数据
4.20.2callback
- 类型:
Function - 说明:验证回调
4.20.3callback: err
- 类型:
Error | Array - 说明:错误信息,当
skipInvalid = true时,err 是一个数组;否则一个 Error 对象
err 包含 context 属性,以下的 rule、enable 的函数的上下文也是 context。
err.context.options:参数配置err.context.alias:当前错误字段别名err.context.limit:当前错误字段限制值err.context.message:当前错误字段消息err.context.name:当前错误字段键名err.context.rule:当前错误字段规则err.context.value:当前错误字段键值err.context.data:当前验证数据err.context.aliases:当前验证数据别名组