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
- 说明:是否跳过非法验证继续后面的验证
- 默认:
false
false
:出错就不再继续验证(最多只可能一个错误结果)true
:出错继续验证后面的数据(可能会有多个错误结果)
3.1.2.default.override
- 类型:
Boolean
- 说明:表单验证的数据是否可以被验证规则覆盖,比如 trim 操作
- 默认:
true
3.2.rule(rule): validator
获取静态规则。
3.2.1rule
- 类型:
string
- 说明:规则名称,包含的规则有:
equal
max
maxLength
min
minLength
pattern
required
trim
type
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
:当前验证数据别名组