| | |
| | | var validate = { |
| | | |
| | | state:true, |
| | | errInfo:'', |
| | | |
| | | setState:function(_state,_errInfo){ |
| | | this.state = _state; |
| | | if(!this.state){ |
| | | this.errInfo = _errInfo |
| | | throw "校验失败:"+_errInfo; |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | 校验手机号 |
| | | **/ |
| | | phone:function(text){ |
| | | var reg =/^0?1[3|4|5|6|7|8][0-9]\d{8}$/; |
| | | var regPhone =/^0?1[3|4|5|6|7|8][0-9]\d{8}$/; |
| | | return regPhone.test(text); |
| | | }, |
| | | /** |
| | |
| | | num:function(text){ |
| | | var regNum = /^[0-9]+$/; |
| | | return regNum.test(text); |
| | | }, |
| | | date:function(str) { |
| | | var regDate = /^(\d{4})-(\d{2})-(\d{2})$/; |
| | | return regDate.test(str); |
| | | }, |
| | | /** |
| | | 金额校验 |
| | | **/ |
| | | money:function(text){ |
| | | var regMoney = /^\d+\.?\d{0,2}$/; |
| | | return regMoney.test(text); |
| | | } |
| | | |
| | | }; |
| | |
| | | * |
| | | * dataConfig: |
| | | * { |
| | | * "name":"required|maxin(1,10)", |
| | | * "age":"required|num", |
| | | * "emailInfo.email":"required|email" |
| | | * "name":[ |
| | | { |
| | | limit:"required", |
| | | param:"", |
| | | errInfo:'用户名为必填' |
| | | }, |
| | | { |
| | | limit:"maxin", |
| | | param:"1,10", |
| | | errInfo:'用户名必须为1到10个字之间' |
| | | }] |
| | | * } |
| | | * |
| | | */ |
| | | validate.validate = function(dataObj,dataConfig){ |
| | | for(var key in dataConfig){ |
| | | var keys = key.split("."); |
| | | dataConfig[key]; |
| | | |
| | | try{ |
| | | // 循环配置(每个字段) |
| | | for(var key in dataConfig){ |
| | | //配置信息 |
| | | var tmpDataConfigValue = dataConfig[key]; |
| | | //对key进行处理 |
| | | var keys = key.split("."); |
| | | console.log("keys :",keys); |
| | | var tmpDataObj = dataObj; |
| | | //根据配置获取 数据值 |
| | | keys.forEach(function(tmpKey){ |
| | | console.log('tmpDataObj:',tmpDataObj); |
| | | tmpDataObj = tmpDataObj[tmpKey] |
| | | }); |
| | | // for(var tmpKey in keys){ |
| | | // console.log('tmpDataObj:',tmpDataObj); |
| | | // tmpDataObj = tmpDataObj[tmpKey] |
| | | // } |
| | | |
| | | tmpDataConfigValue.forEach(function(configObj){ |
| | | if(configObj.limit == "required"){ |
| | | validate.setState(validate.required(tmpDataObj),configObj.errInfo); |
| | | } |
| | | |
| | | if(configObj.limit == 'phone'){ |
| | | validate.setState(validate.phone(tmpDataObj),configObj.errInfo); |
| | | } |
| | | |
| | | if(configObj.limit == 'email'){ |
| | | validate.setState(validate.email(tmpDataObj),configObj.errInfo); |
| | | } |
| | | |
| | | if(configObj.limit == 'maxin'){ |
| | | var tmpParam = configObj.param.split(",") |
| | | validate.setState(validate.maxin(tmpDataObj,tmpParam[0],tmpParam[1]),configObj.errInfo); |
| | | } |
| | | |
| | | if(configObj.limit == 'maxLength'){ |
| | | validate.setState(validate.maxLength(tmpDataObj,configObj.param),configObj.errInfo); |
| | | |
| | | } |
| | | |
| | | if(configObj.limit == 'minLength'){ |
| | | validate.setState(validate.minLength(tmpDataObj,configObj.param),configObj.errInfo); |
| | | 7 |
| | | } |
| | | |
| | | if(configObj.limit == 'num'){ |
| | | validate.setState(validate.num(tmpDataObj),configObj.errInfo); |
| | | } |
| | | |
| | | if(configObj.limit == 'date'){ |
| | | validate.setState(validate.date(tmpDataObj),configObj.errInfo); |
| | | } |
| | | |
| | | if(configObj.limit == 'money'){ |
| | | validate.setState(validate.money(tmpDataObj),configObj.errInfo); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | }catch(error){ |
| | | console.log("数据校验失败",validate.state,validate.errInfo,error); |
| | | return false; |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | |
| | | })(window.vc.validate); |
| | | })(window.vc.validate); |
| | | |
| | | |
| | | /** |
| | | 对 validate 进行二次封装 |
| | | **/ |
| | | (function(vc){ |
| | | vc.check = function(dataObj,dataConfig){ |
| | | return vc.validate.validate(dataObj, dataConfig); |
| | | } |
| | | })(window.vc) |