js校验
/**
* SF_Validate类提供所有格式的效验功能
*/
function SF_Validate() {
}
/**
* 判断是否是第一个验证不通过的对象
* @param {Object} focusObj 定位控件对象
* @param {Object} obj 当前控件对象
*/
SF_Validate._setNullObj_ = function(focusObj, obj) {
if (SF_DataConvert.isNullOrEmpty(focusObj)) {
focusObj = obj;
}
return focusObj;
};
/**
* 光标定位
* @param {Object} focusObj 定位控件对象
*/
SF_Validate._focus_ = function(focusObj) {
if (!SF_DataConvert.isNullOrEmpty(focusObj)) {
$(focusObj).focus();
}
};
/**
* 验证带“vaildate”属性的input标签的值
* @param idstr form表单id的jquery格式
* @param focusObj 值不合法的input标签对象
* @returns {Boolean}值不合法返回false,否则返回true
*/
SF_Validate._checkValidate_ = function(idstr,focusObj){
var result = true ;
var tag = idstr + 'input[vaildate],' + idstr + 'select[vaildate],' + idstr+ 'textarea[vaildate]'; //其他信息验证
$(tag).each(function(i) {
var obj = $(this); // 控件对象
var value = obj.val(); // 控件的值
var vaildateStr = obj.attr("vaildate"); // 控件的验证信息
if (SF_DataConvert.isNullOrEmpty(vaildateStr))return;
var arr = vaildateStr.split(SF_SplitType.ARRAY); // 获得需要验证的方法
for (i = 0; i < arr.length; i++) {
var column = arr[i].split(SF_SplitType.FIELD); // 每个验证方法分组,分为// [方法名]|[自定义提示信息]
var msg = SF_Validate.getMessage(value, column[0]); // 通过方法名获得默认提示信息
if (SF_DataConvert.isNullOrEmpty(msg))continue; // 表示验证通过
focusObj = SF_Validate._setNullObj_(focusObj, obj);
if (!SF_DataConvert.isNullOrEmpty(column[1])) {
msg = column[1]; // 如果自定义提示信息不为空,则替换默认提示信息为自定义提示信息
}
SF_Window.addError(obj, msg); // 显示错误信息
result = false;
break;
}
});
return result;
} ;
/**
* 验证input标签值是否符合最大长度或者最小长度
* @param idstr form表单id的jquery格式
* @param focusObj 值不合法的input标签对象
* @returns {Boolean} 值不合法返回false,否则返回true
*/
SF_Validate._checkLength_=function(idstr,focusObj){
var result = true ;
var tag = idstr + 'input[minlength],' + idstr + 'input[maxlength],' + idstr+ 'textarea[maxlength],' + idstr + 'textarea[minlength]' ;
$(tag).each(function(i) {
var obj = $(this); //控件对象
var str = obj.val(); //控件的值
var maxlength = obj.attr("maxlength"); //最大长度
var minlength = obj.attr("minlength"); //最小长度
var flagmax = SF_DataConvert.isNullOrEmpty(maxlength); //判断最大长度是否为空
var flagmin = SF_DataConvert.isNullOrEmpty(minlength); //判断最小长度是否为空
if (!flagmax && !flagmin) { //同时不为空,进行判断
if (!SF_Validate.range(str, minlength, maxlength)) {
focusObj = SF_Validate._setNullObj_(focusObj, obj);
SF_Window.addError(obj, '请输入' + minlength + '-'+ maxlength + '个字符!');
result = false;
};
} else {
if (!flagmax) { //如果最大长度不为空 ,最小长度为空,只需要判断最大长度
if (!SF_Validate.range(str, 0, maxlength)) {
focusObj = SF_Validate._setNullObj_(focusObj, obj);
SF_Window.addError(obj,'请输入小于' + maxlength + '个字符!');
result = false;
};
}
if (!flagmin) { //如果最小长度不为空 ,最大长度为空只要判断最小长度。
if (!SF_Validate.range(str, minlength,Number.MAX_VALUE)) {
focusObj = SF_Validate._setNullObj_(focusObj, obj);
SF_Window.addError(obj,'请至少输入' + minlength + '个字符!');
result = false;
};
};
};
});
return result ;
} ;
/**
* 对Form内的表单进行合法校验和检查单元的功能
* @param {String} formId Form的ID
*/
SF_Validate.check = function(formId) {
var focusObj = null;
var result = true;
var idstr = "";
if (!SF_DataConvert.isNullOrEmpty(formId)) {
idstr = "#" + formId + " "; //拼凑FORM的前缀
}
SF_Window.removeError(); //每次验证清除掉之前的验证信息
result = SF_Validate._checkValidate_(idstr,focusObj) && result;
result = SF_Validate._checkLength_(idstr,focusObj) && result;
SF_Validate._focus_(focusObj);
SF_Frame.resize();
return result;
};
/**
* 通过方法名验证
* @param {Object} obj //需要验证的值
* @param {Object} mothodName //方法名
* return 返回默认提示信息
*/
SF_Validate.getMessage = function(obj, mothodName) {
var result = "";
switch (mothodName) {
case "isNull":
if (!SF_Validate.isNotNull(obj)) {result = "该项必填!";}
break;
case "isNumber":
if (!SF_Validate.isNumber(obj)) { result = "输入内容必须为数字!";}
break;
case "isPositiveNumber":
if (!SF_Validate.isPositiveNumber(obj)) { result = "输入内容必须为数字,且大于0!";}
break;
case "isInteger":
if (!SF_Validate.isInteger(obj)) { result = "输入内容只能是整数!";}
break;
case "isPositiveInteger":
if (!SF_Validate.isPositiveInteger(obj)) { result = "输入内容只能是正整数!";}
break;
case "isDouble":
if (!SF_Validate.isDouble(obj)) { result = "输入内容只能是小数!";}
break;
case "isCurrency":
if (!SF_Validate.isCurrency(obj)) { result = "输入内容必须符合货币格式!";}
break;
case "isZip":
if (!SF_Validate.isZip(obj)) { result = "请输入标准邮编格式,例如:350001";}
break;
case "isIdCard":
if (!SF_Validate.isIdCard(obj)) { result = "请输入标准的身份证!";}
break;
case "isPhone":
if (!SF_Validate.isPhone(obj)) {result = "请输入正确的固定电话,例如:0591-88888888";}
break;
case "isMobile":
if (!SF_Validate.isMobile(obj)) {result = "请输入正确的手机,例如:13800000000";}
break;
case "isTel":
if (!SF_Validate.isTel(obj)) { result = "请输入正确的手机或者固定电话!";}
break;
case "isEmail":
if (!SF_Validate.isEmail(obj)) { result = "请输入正确的Email,例如:aa@qq.com";}
break;
case "isUrl":
if (!SF_Validate.isUrl(obj)) { result = "请输入正确的URL地址!";}
break;
case "isChinese":
if (!SF_Validate.isChinese(obj)) {result = "输入内容只能是中文!";}
break;
case "isEnglish":
if (!SF_Validate.isEnglish(obj)) { result = "输入内容只能是英文!";}
break;
case "isImage":
if (!SF_Validate.isImage(obj)) { result = "请上传图片格式的文件!";}
break;
case "isEnglishAndNumber":
if (!SF_Validate.isEnglishAndNumber(obj)) {result = "输入内容只能是数字、字母、下划线!";}
break;
case "isIp":
if (!SF_Validate.isIP(obj)) { result = "输入的IP格式有误!";}
break;
case "filterSql":
if (!SF_Validate.filterSql(obj)) { result = "请不要输入特殊字符和SQL关键字!";}
break;
case "isFax":
if (!SF_Validate.isFax(obj)) {result = "请输入正确的传真号码,例如:0591-88888888";}
break;
case "isRange":
if (!SF_Validate.range(obj, '4', '10')) { result = "请输入正确长度的密码,密码长度为4-10位";
}
break;
default:
break;
}
return result;
};
/**
* 检查传入的值是否满足正则表达式
* @param {Object} str 需要验证的值,如果为空则返回true;
* @param {Object} reg 正则表达式
* return 返回boolean对象
*/
SF_Validate.match = function(str, reg) {
if (SF_DataConvert.isNullOrEmpty(str)) {
return true;
}
var flag = reg.test(str);
return flag;
};
/**
* 检查传入的值是否为空
* @param {Object} str 需要验证的值
* return 返回boolean对象
*/
SF_Validate.isNotNull = function(str) {
if (SF_DataConvert.isNullOrEmpty(str)) {
return false;
} else {
return true;
}
};
/**
* 检查传入的值是否IP格式
* @param {Object} str 需要验证的值
* return 返回boolean对象
*/
SF_Validate.isIP = function(str) {
var reg = /^((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5]))(,((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))*$/;
return SF_Validate.match(str, reg);
};
/**
* 判断是否为特殊字符和SQL关键字
* @param {Object} str 需要验证的值
* return 返回boolean对象
*/
SF_Validate.filterSql = function(str) {
var reg = /(create|drop|alter|select|declare|fetch|begin|end|cursor|cast|execute|insert|update|delete|truncat|exec|call|count|kill|open|or|and|not|xp_.+|\*|--|'|"|=|;|>|<|%)\b/i;
var flag = reg.test(str);
return !flag;
};
/**
* 检查传入的值是否为数字(包括正整数和0)
* @param {Object} str 需要验证的值
* return 返回boolean对象
*/
SF_Validate.isNumber = function(str) {
var reg = /^\d+$/;
return SF_Validate.match(str, reg);
};
/**
* 检查传入的值是否为正数(包括小数,但不包括负数和0)
* @param {Object} str 需要验证的值
* return 返回boolean对象
*/
SF_Validate.isPositiveNumber = function(str) {
var reg = /^([1-9]\d*)(\.{1}\d{1,2}|\.{0})$/;
return SF_Validate.match(str, reg);
};
/**
* 检查传入的值是否为整数(整数,包括负数和0)
* @param {Object} str 需要验证的值
* return 返回boolean对象
*/
SF_Validate.isInteger = function(str) {
var reg = /^[-\+]?\d+$/;
return SF_Validate.match(str, reg);
};
/**
* 检查传入的值是否为正整数(整数,但不包括负数)
* @param {Object} str 需要验证的值
* return 返回boolean对象
*/
SF_Validate.isPositiveInteger = function(str) {
var reg = /^[0-9]*[1-9][0-9]*$/;
//var reg = /^[0-9]*[0-9]*$/;
return SF_Validate.match(str, reg);
};
/**
* 检查传入的值是否为小数
* @param {Object} str 需要验证的值
* return 返回boolean对象
*/
SF_Validate.isDouble = function(str) {
var reg = /^[-\+]?\d+(\.\d+)?$/;
return SF_Validate.match(str, reg);
};
/**
* 检查传入的值是否为货币格式
* @param {Object} str 需要验证的值
* return 返回boolean对象
*/
SF_Validate.isCurrency = function(str) {
var reg = /^\d+(\.\d+)?$/;
return SF_Validate.match(str, reg);
};
/**
* 检查传入的值是否为邮编
* @param {Object} str 需要验证的值
* return 返回boolean对象
*/
SF_Validate.isZip = function(str) {
var reg = /^[1-9]\d{5}$/;
return SF_Validate.match(str, reg);
};
/**
* 检查传入的值的长度是否符合规定
* @param {Object} str 需要验证的值
* @param {int} min 最小长度
* @param {int} max 最大长度
* return 返回boolean对象
*/
SF_Validate.range = function(str, min, max) {
var flag;
if (str.length > max || str.length < min) {
flag = false;
} else {
flag = true;
}
return flag;
};
/**
* 检查传入的值是否为身份证格式
* @param {Object} str 需要验证的值
* return 返回boolean对象
*/
SF_Validate.isIdCard = function(str) {
var reg = /^([0-9]{15}|([0-9]{17}([0-9]|x|X)))$/;
return SF_Validate.match(str, reg);
};
/**
* 检查传入的值是否为固定电话
* @param {Object} str 需要验证的值
* return 返回boolean对象
*/
SF_Validate.isPhone = function(str) {
var reg = /^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}[- ]?)?[1-9]\d{6,7}$/;
return SF_Validate.match(str, reg);
};
/**
* 检查传入的值是否为手机
* @param {Object} str 需要验证的值
* return 返回boolean对象
*/
SF_Validate.isMobile = function(str) {
var reg = /^[1]\d{10}(?!\d)$/;
return SF_Validate.match(str, reg);
};
/**
* 检查传入的值验证是否为手机号码或则固定电话
* @param {Object} str 需要验证的值
* return 返回boolean对象
*/
SF_Validate.isTel = function(str) {
var reg = /\d{3}-\d{8}|\d{4}-\d{7}|[1]\d{10}(?!\d)/;
return SF_Validate.match(str, reg);
};
/**
* 检查传入的值是否为Email
* @param {Object} str 需要验证的值
* return 返回boolean对象
*/
SF_Validate.isEmail = function(str) {
var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,}){1,2})$/;
return SF_Validate.match(str, reg);
};
/**
* 检查传入的值是否为URL地址
* @param {Object} str 需要验证的值
* return 返回boolean对象
*/
SF_Validate.isUrl = function(str) {
var reg = /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;
return SF_Validate.match(str, reg);
};
/**
* 检查传入的值是否为中文
* @param {Object} str 需要验证的值
* return 返回boolean对象
*/
SF_Validate.isChinese = function(str) {
var reg = /^[\u4e00-\u9fa5](\s*[\u4e00-\u9fa5])*$/;
return SF_Validate.match(str, reg);
};
/**
* 检查传入的值是否为英文
* @param {Object} str 需要验证的值
* return 返回boolean对象
*/
SF_Validate.isEnglish = function(str) {
var reg = /^[a-zA-Z]+$/;
return SF_Validate.match(str, reg);
};
/**
* 检查传入的url是否为图片格式
* @param {String} url 需要验证的URL
* return 返回boolean对象
*/
SF_Validate.isImage = function(url) {
var type = "jpeg、jpg、gif、png、tiff、bmp";
return SF_Validate.files(url, type);
};
/**
* 检查传入的值是否为英文或者数字
* @param {String} str 需要验证的值
* return 返回boolean对象
*/
SF_Validate.isEnglishAndNumber = function(str) {
var reg = /^[a-zA-Z0-9_-]+$/;
return SF_Validate.match(str, reg);
};
/**
* 检查传入的值是否为传真
* @param {Object} str 需要验证的值
* return 返回boolean对象
*/
SF_Validate.isFax = function(str) {
var reg = /^(\d{3,4}-)?\d{7,8}$/;
return SF_Validate.match(str, reg);
};
/**
* 检查传入的url是否为指定的文件格式
* @param {String} url 需要验证的URL
* @param {String} type 验证的文件格式,如果多个以逗号隔开, 例如可传入"zip,rar",即验证是否符合zip或则rar格式
* return 返回boolean对象
*/
SF_Validate.files = function(url, type) {
var fileUrl = url.toLowerCase();
var postfix = fileUrl.substring(fileUrl.lastIndexOf('.') + 1,
fileUrl.length);
if (type.indexOf(postfix) > -1) {
return true;
} else {
return false;
}
};
-------------------------------------------------------------------------
## 极客时间全网最便宜最优惠购买方式,优惠券返现 百度网盘 微信关注公众号“选门好课”
扫描下方二维码关注我的公众号"选门好课",与我一起交流知识
## 极客时间全网最便宜最优惠购买方式,优惠券返现 百度网盘 微信关注公众号“选门好课”
扫描下方二维码关注我的公众号"选门好课",与我一起交流知识

浙公网安备 33010602011771号