wuxw
2019-08-13 9e29441646434d9f54a2c3e855a724633885d8a4
WebService/src/main/resources/static/js/vc-validate.js
@@ -22,11 +22,21 @@
    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);
        },
        /**
@@ -90,6 +100,17 @@
        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);
        }
    };
@@ -117,17 +138,99 @@
     *
     * 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)