加入校验类

This commit is contained in:
java110 2020-03-22 12:41:43 +08:00
parent 806bec57d6
commit 8d253101b2

View File

@ -1472,5 +1472,320 @@
}, false);
})(window.vcFramework);
/**
vc 校验 工具类 -method
(1)required:true 必输字段
(2)remote:"remote-valid.jsp" 使用ajax方法调用remote-valid.jsp验证输入值
(3)email:true 必须输入正确格式的电子邮件
(4)url:true 必须输入正确格式的网址
(5)date:true 必须输入正确格式的日期日期校验ie6出错慎用
(6)dateISO:true 必须输入正确格式的日期(ISO)例如2009-06-231998/01/22 只验证格式不验证有效性
(7)number:true 必须输入合法的数字(负数小数)
(8)digits:true 必须输入整数
(9)creditcard:true 必须输入合法的信用卡号
(10)equalTo:"#password" 输入值必须和#password相同
(11)accept: 输入拥有合法后缀名的字符串上传文件的后缀
(12)maxlength:5 输入长度最多是5的字符串(汉字算一个字符)
(13)minlength:10 输入长度最小是10的字符串(汉字算一个字符)
(14)rangelength:[5,10] 输入长度必须介于 5 10 之间的字符串")(汉字算一个字符)
(15)range:[5,10] 输入值必须介于 5 10 之间
(16)max:5 输入值不能大于5
(17)min:10 输入值不能小于10
**/
(function(vcFramework){
var validate = {
state:true,
errInfo:'',
setState:function(_state,_errInfo){
this.state = _state;
if(!this.state){
this.errInfo = _errInfo
throw "校验失败:"+_errInfo;
}
},
/**
校验手机号
**/
phone:function(text){
var regPhone =/^0?1[3|4|5|6|7|8][0-9]\d{8}$/;
return regPhone.test(text);
},
/**
校验邮箱
**/
email:function(text){
var regEmail = new RegExp("^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$"); //正则表达式
return regEmail.test(text);
},
/**
* 必填
* @param {参数} text
*/
required:function(text){
if(text == undefined || text == null || text == "" ){
return false;
}
return true;
},
/**
* 校验长度
* @param {校验文本} text
* @param {最小长度} minLength
* @param {最大长度} maxLength
*/
maxin:function(text,minLength,maxLength){
if(text.length <minLength || text.length > maxLength){
return false;
}
return true;
},
/**
* 校验长度
* @param {校验文本} text
* @param {最大长度} maxLength
*/
maxLength:function(text,maxLength){
if(text.length > maxLength){
return false;
}
return true;
},
/**
* 校验最小长度
* @param {校验文本} text
* @param {最小长度} minLength
*/
minLength:function(text,minLength){
if(text.length < minLength){
return false;
}
return true;
},
/**
* 全是数字
* @param {校验文本} text
*/
num:function(text){
var regNum = /^[0-9][0-9]*$/;
return regNum.test(text);
},
date:function(str) {
var regDate = /^(\d{4})-(\d{2})-(\d{2})$/;
return regDate.test(str);
},
dateTime:function(str){
var reDateTime = /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\s+(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/;
return reDateTime.test(str);
},
/**
金额校验
**/
money:function(text){
var regMoney = /^\d+\.?\d{0,2}$/;
return regMoney.test(text);
},
idCard:function(num){
num = num.toUpperCase();
//身份证号码为15位或者18位15位时全为数字18位前17位为数字最后一位是校验位可能为数字或字符X。
if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) {
return false;
}
//校验位按照ISO 7064:1983.MOD 11-2的规定生成X可以认为是数字10。
//下面分别分析出生日期和校验位
var len, re;
len = num.length;
if (len == 15) {
re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
var arrSplit = num.match(re);
//检查生日日期是否正确
var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
var bGoodDay;
bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
if (!bGoodDay) {
return false;
}
else {
//将15位身份证转成18位
//校验位按照ISO 7064:1983.MOD 11-2的规定生成X可以认为是数字10。
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var nTemp = 0, i;
num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);
for (i = 0; i < 17; i++) {
nTemp += num.substr(i, 1) * arrInt[i];
}
num += arrCh[nTemp % 11];
return true;
}
}
if (len == 18) {
re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
var arrSplit = num.match(re);
//检查生日日期是否正确
var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
var bGoodDay;
bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
if (!bGoodDay) {
// alert(dtmBirth.getYear());
// alert(arrSplit[2]);
return false;
}
else {
//检验18位身份证的校验码是否正确。
//校验位按照ISO 7064:1983.MOD 11-2的规定生成X可以认为是数字10。
var valnum;
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var nTemp = 0, i;
for (i = 0; i < 17; i++) {
nTemp += num.substr(i, 1) * arrInt[i];
}
valnum = arrCh[nTemp % 11];
if (valnum != num.substr(17, 1)) {
return false;
}
return true;
}
}
return false;
}
};
vc.validate = validate;
})(window.vcFramework);
/**
* 校验 -core
*/
(function(validate){
/**
* 根据配置校验
*
* eg:
* dataObj:
* {
* name:"wuxw",
* age:"19",
* emailInfo:{
* email:"928255095@qq.com"
* }
* }
*
* dataConfig:
* {
* "name":[
{
limit:"required",
param:"",
errInfo:'用户名为必填'
},
{
limit:"maxin",
param:"1,10",
errInfo:'用户名必须为1到10个字之间'
}]
* }
*
*/
validate.validate = function(dataObj,dataConfig){
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 == 'dateTime'){
validate.setState(validate.dateTime(tmpDataObj),configObj.errInfo);
}
if(configObj.limit == 'money'){
validate.setState(validate.money(tmpDataObj),configObj.errInfo);
}
if(configObj.limit == 'idCard'){
validate.setState(validate.idCard(tmpDataObj),configObj.errInfo);
}
});
}
}catch(error){
console.log("数据校验失败",validate.state,validate.errInfo,error);
return false;
}
return true;
}
})(window.vcFramework.validate);
/**
validate 进行二次封装
**/
(function(vcFramework){
vcFramework.check = function(dataObj,dataConfig){
return vcFramework.validate.validate(dataObj, dataConfig);
}
})(window.vcFramework)