NullFeng / JsValidate


README.md 4.25 KB

JsValidate

项目介绍

这是一个非常迷你的数据验证器,至于迷你到那种程度,就不形容了,一看便知!

  • 兼容 AMDCMD 规范
  • 核心代码50+行 绝对轻量级(确定绝对?)
  • 支持单个数据和数据批量验证
  • 扩展性好 支持自定义验证(函数/正则)
  • 使用简单 几句代码便可完成复杂的验证
  • 编不下去了… -_-b
    下面是内置的规则,比较少,要添加的话,网上一搜一大把
{
	'number': '$0只能是数字',
  	'chinese': '$0只能是中文',
  	'email': '$0格式不正确',
  	'idcard': '$0格式不正确',
  	'phone': '$0格式不正确',
	'require': '$0不能为空',
	'length': '$0长度只能是$1到$2个字符',
	'min': '$0至少$1个字符',
	'max': '$0不能超过$1个字符',
	'eq': '$0只能是$1',
	'neq': '$0不能为$1',
	'gt': '$0不能小于$1',
	'lt': '$0不能大于$1',
	'between': '$0值只能在$1到$2之间',
	'in': '$0只能取$n',
	'confirm': '$0与$1不一致'
}

使用说明

验证顺序

Validate的验证规则为从左到右,所以require和@一定要放在最前面,否则可能引发错误的提示

为字段名增加中文名称

直接在规则中写上”@+名称”即可,需要注意的是@只能写在第一个! 第一个! 第一个!
举个栗子,不加@

{'name':'require!必须写$0'}
//必须写name

加上之后

{'name':'@姓名|require!必须写$0'} //正确姿势
//必须写姓名
{'name':'require!必须写$0|@姓名'} //错误姿势
//必须写name

自定义消息

在规则名称后面加上“!”则为该条规则的自定义消息
$0为字段名称,$1..$n依次为后面的参数,如果直接写$n就是所有参数(逗号隔开)

{'name':'@姓名|require!必须写$0'}
//输出 必须写姓名

开始使用

先引入 <script src='Validate.js'></script> 然后直接使用

/**
 * 检查数据
 * @param  rule  单或多条规则
 * @param  field 要检查的数据
 * @param  all   是否返回全部错误
 * @return       检查通过返回true 失败返回 错误消息或错误消息集合
 */
Validate.check(rule,field,all);
/**
 * 添加或修改规则
 * @param  name 规则名称
 * @param  rule 规则内容(函数或正则)
 * @param  msg  消息
 * @return      this
 */
Validate.rule(name,rule,msg);

使用示例

var rule = {
	'name':'@姓名|require|chinese',
	'idcard':'@身份证号码|require|idcard',
	'type':'@类型|require|in:0,1',
	'qq':'@QQ号码|require|number',
	'email':'@电子邮箱|require|email',
	'password':'@密码|require|len:6,10',
	'password2':'@确认密码|confirm:password!确认密码不一致'
},data = {
	'name':'nullfeng',
	'idcard':'50023619951105256a',
	'type':0,
	'qq':'',
	'email':'nullfeng(at)163.com',
	'password':'123123',
	'password2':'456456'
};
/**
 * 验证全部的错误
 */
var result = Validate.check(rule,data,true);
console.log(result);
//output:
/*{
	email:"电子邮箱格式不正确"
	idcard:"身份证号码格式不正确"
	name:"姓名只能是中文"
	password2:"确认密码不一致"
	qq:"QQ号码不能为空"
}*/
/**
 * 验证单个错误
 */
result = Validate.check('@昵称|chinese','nullfeng');
console.log(result);
// output: 昵称只能是中文

增加自定义规则(支持正则和函数)

//增加一个只能是指定值的规则
Validate.rule('diy_rule',function(v,m){
	//this.field 获取要验证的数据 如 this.field['username']
	//this.test 执行已有的验证规则 如 this.test.eq('2',2);
    return v==m;
},'$0 只能是$1');
//使用
var test = '23';
var result = Validate.check(test,'@测试变量|diy_rule:24');
console.log(result);
//输出:测试变量 只能是24

//增加一个只能是5开头的规则
Validate.add('diy_rule',/^5\w+/,'$0 只能是5开头哦');
//使用
var test = 'abcd';
var result = Validate.check(test,'@测试变量|diy_rule');
console.log(result);
//输出:测试变量 只能是5开头哦

check()返回值

验证通过返回真true,失败直接返回错误消息

var result = Validate.check(...);
if(result!==true){
    //验证不通过
    alert(result);
}

后期目标

  • 支持异步(远程)验证
  • 增加对表单的自动验证支持
  • 具体实现看心情 🙂