blear.classes.validation

1Introduction

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:整数格式
    • urlhttp:网络地址格式
    • 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 属性,以下的 ruleenable 的函数的上下文也是 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:当前验证数据别名组

5Dependencies