⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jquery.validate.js

📁 自己写的一个struts+spring+hibernate测试程序
💻 JS
字号:
// JavaScript Form Validation
/*
表单验证插件(jquery plugin)
*/
jQuery.fn.validate = function(configFile){

	var formId = "";
	if(jQuery.browser.msie){
		formId = this.get(0).attributes("id").nodeValue;
	}else{
		formId = this.get(0).id;
	}

	var errorMessages = new Array();  //存放错误信息
	var xmlDom = jQuery.validate.initXmlDom(configFile);
	var xmlForm = xmlDom.documentElement.selectSingleNode("form[@id='" + formId + "']");
	if (xmlForm == null)
	{
		alert("没有找到配置信息!");
		return;
	}
	var showall = xmlForm.getAttribute("show-all");
	var showtype = xmlForm.getAttribute("show-type");
	var errorDiv = xmlForm.getAttribute("error-div");

	var blurValidateElements = xmlForm.selectNodes("element[@blur-validate='true']");
	var elementIds ="";
	for(var i=0; i<blurValidateElements.length; i++){
		elementIds += "#" + blurValidateElements[i].getAttribute("id") + ",";
	};
	elementBlur = $(elementIds).blur(function(){
		var elementNode = xmlForm.selectSingleNode("element[@id='" + this.id + "']");
		try{
			jQuery.validate.validate(elementNode, $(this), errorMessages);
		}catch(e){
			alert("运行时错误!");	
		}	
		//显示错误信息
		if(errorMessages.length>0){
			if(showtype=="div"){
				if(errorDiv != null){
					jQuery.validate.showError(errorMessages, errorDiv);	
				}else{
					jQuery.validate.alertError(errorMessages);	
				}
			}else{
				jQuery.validate.alertError(errorMessages);
			}
			errorMessages.length = 0;
			var failFuc = elementNode.getAttribute("fail");
			if(failFuc!=null){
				try{
					eval(failFuc);
				}catch(e){}
			}
			return;
		}
		var successFuc = elementNode.getAttribute("success");
		if(successFuc!=null){
			try{
				eval(successFuc);
			}catch(e){}
		}
	});
	$(this).submit(function(){
		if(xmlForm == null){
			return true;	
		}
		//循环验证每个form元素
		var elements = $("#" + formId + " input, #" + formId + " textarea, #" + formId + " select");
		for(var i=0; i<elements.size(); i++){
			var xmlElement = xmlForm.selectSingleNode("element[@id='" + elements[i].id + "']");
			if(xmlElement != null){
				try{
					jQuery.validate.validate(xmlElement, $(elements[i]), errorMessages);
				}catch(e){
					alert("运行时错误!");	
				}
			}
			if(errorMessages.length > 0 && showall=="false") break;
		}
		//显示错误信息
		if(errorMessages.length>0){
			if(showtype=="div"){
				if(errorDiv != null){
					jQuery.validate.showError(errorMessages, errorDiv);	
				}else{
					jQuery.validate.alertError(errorMessages);	
				}
			}else{
				jQuery.validate.alertError(errorMessages);
			}
			errorMessages.length = 0;
			return false;
		}
		return true;
	});
}
jQuery.validate = {
	//创建xmldom
	createXmlDom : function() {
		if (document.implementation && document.implementation.createDocument){
			return document.implementation.createDocument("", "", null);
		}else if(window.ActiveXObject){
			try {
				var prefix = ["MSXML2", "MSXML", "Microsoft", "MSXML3"];
				for (var i = 0; i < prefix.length; i++) {
					var obj = new ActiveXObject(prefix[i] + ".DomDocument"); 
					if (obj == null || typeof(obj) == 'undefined') {
						continue;
					} else {
						return obj;
					}
				}
			}catch(e) {
				throw new Error(" IE5&+ is requiered.");
			}
		}else{
			throw new Error("Cannot create DOM Document!");
		}
	},
	initXmlDom: function(configFile){
		var xmlDom = this.createXmlDom();
		xmlDom.async = false;
		xmlDom.load(configFile);
		if (xmlDom.documentElement == null) {
			alert("配置文件读取错误,请检查。");
			return null;
		}
		return xmlDom;
	},
	//格式化显示错误信息
	alertError: function(errorMessages){
		var errors = "";
		for(var i=0; i<errorMessages.length; i++){
			errors += errorMessages[i] + "\n";
		}
		alert(errors);	
	},
	showError: function(errorMessages, errorDiv){
		var errors = "";
		for(var i=0; i<errorMessages.length; i++){
			errors += errorMessages[i] + "<br />";
		}
		$("#" + errorDiv).html(errors);
	},
	//比较日期大小
	compareDate: function(DateOne,DateTwo)
	{ 
		var OneMonth = DateOne.substring(5,DateOne.lastIndexOf ("-"));
		var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf ("-")+1);
		var OneYear = DateOne.substring(0,DateOne.indexOf ("-"));

		var TwoMonth = DateTwo.substring(5,DateTwo.lastIndexOf ("-"));
		var TwoDay = DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf ("-")+1);
		var TwoYear = DateTwo.substring(0,DateTwo.indexOf ("-"));

		if (Date.parse(OneMonth+"/"+OneDay+"/"+OneYear) > Date.parse(TwoMonth+"/"+TwoDay+"/"+TwoYear))
		{
			return true;
		}
		else
		{
			return false;
		}

	},
	//验证
	validate: function(xmlElement, element, errorMessages){
		if(element == null || element == undefined) return;
		var result = (
					  this.validateRequired(xmlElement, element, errorMessages) &&
					  this.validateEmail(xmlElement, element, errorMessages) &&
					  this.validatePattern(xmlElement, element, errorMessages) &&
					  this.validateDigit(xmlElement, element, errorMessages) &&
					  this.validateDate(xmlElement, element, errorMessages) &&
					  this.validateCNDate(xmlElement, element, errorMessages) &&
					  this.validateChinese(xmlElement, element, errorMessages) &&
					  this.validateUrl(xmlElement, element, errorMessages) &&
					  this.validateMinLen(xmlElement, element, errorMessages) &&
					  this.validateMaxLen(xmlElement, element, errorMessages) &&
					  this.validateFloat(xmlElement, element, errorMessages) &&
					  this.validateMinValue(xmlElement, element, errorMessages) &&
					  this.validateMaxValue(xmlElement, element, errorMessages) &&
					  this.validateEqual(xmlElement, element, errorMessages) &&
					  this.validateGreatThan(xmlElement, element, errorMessages) &&
					  this.validateLessThan(xmlElement, element, errorMessages) &&
					  this.validateIp(xmlElement, element, errorMessages) &&
					  this.validatePhone(xmlElement, element, errorMessages) &&
					  this.validateMobilePhone(xmlElement, element, errorMessages) &&
					  this.validateAjax(xmlElement, element, errorMessages)
					  );
		if(!result){
			var errorTo = xmlElement.getAttribute("errorTo");
			var error = xmlElement.getAttribute("error");
			if(errorTo!=null){
				errorMessages.push($("#"+errorTo).text());
			}else if(error!=null){
				errorMessages.push(error);
			}
			//element.focus();
			var style = xmlElement.getAttribute("error-class");
			var mainStyle = xmlElement.parentNode.getAttribute("error-class");
			if(style != null){
				element.addClass(style);
			}else if(mainStyle != null){
				element.addClass(mainStyle);
			}
		}else{
			var style = xmlElement.getAttribute("error-class");
			var mainStyle = xmlElement.parentNode.getAttribute("error-class");
			if(style != null){
				element.removeClass(style);
			}else if(mainStyle != null){
				element.removeClass(mainStyle);
			}
		}
	},
	//验证是否为空
	validateRequired: function(xmlElement, element, errorMessages){
		if(xmlElement.selectSingleNode("required") != null){
			if(element.val()==""){
				return false;
			}
			return true;
		}
		return true;
	},
	//验证正则
	validatePattern: function(xmlElement, element, errorMessages){
		if(element.val()=="") return true;
		var xmlValidate = xmlElement.selectSingleNode("pattern");
		if(xmlValidate != null){
			var pattern = xmlValidate.getAttribute("test");
			var re = new RegExp(pattern);
			return re.test(element.val());
		}
		return true;
	},
	//验证email
	validateEmail: function(xmlElement, element, errorMessages){
		if(element.val()=="") return true;
		if(xmlElement.selectSingleNode("email") != null){
			return /^(.+)@(.+)$/.test(element.val());
		}
		return true;
	},
	//验证数字
	validateDigit: function(xmlElement, element, errorMessages){
		if(element.val()=="") return true;
		if(xmlElement.selectSingleNode("digit") != null){
			return /^[\d]+$/.test(element.val());
		}
		return true;
	},
	//验证日期
	validateDate: function(xmlElement, element, errorMessages){
		if(element.val()=="") return true;
		if(xmlElement.selectSingleNode("date") != null){
			return /^[\d]{2}[\-|\/\.][\d]{2}[\-|\/\.][\d]{4}$/.test(element.val());
		}
		return true;
	},
	//验证日期(中国)
	validateCNDate: function(xmlElement, element, errorMessages){
		if(element.val()=="") return true;
		if(xmlElement.selectSingleNode("date-cn") != null){
			return /^[\d]{4}[\-|\/\.][\d]{2}[\-|\/\.][\d]{2}$/.test(element.val());
		}
		return true;
	},
	//验证中文
	validateChinese: function(xmlElement, element, errorMessages){
		if(element.val()=="") return true;
		if(xmlElement.selectSingleNode("chinese") != null){
			return !/[u00-uFF]/.test(element.val());
		}
		return true;
	},
	//验证url
	validateUrl: function(xmlElement, element, errorMessages){
		if(element.val()=="") return true;
		if(xmlElement.selectSingleNode("url") != null){
			return /(http[s]?|ftp):\/\/[^\/\.]+?\..+\w$/i.test(element.val());
		}	
		return true;
	},
	//验证最少长度
	validateMinLen: function(xmlElement, element, errorMessages){
		var xmlValidate = xmlElement.selectSingleNode("minLen");
		if(xmlValidate != null){
			var value = xmlValidate.getAttribute("value");
			if(element.val().length < parseInt(value)){
				return false;	
			}
			return true;
		}	
		return true;
	},
	//验证最大长度
	validateMaxLen: function(xmlElement, element, errorMessages){
		var xmlValidate = xmlElement.selectSingleNode("maxLen");
		if(xmlValidate != null){
			var value = xmlValidate.getAttribute("value");
			if(element.val().length > parseInt(value)){
				return false;	
			}
			return true;
		}	
		return true;
	},
	//验证是否float
	validateFloat: function(xmlElement, element, errorMessages){
		if(element.val()=="") return true;
		if(xmlElement.selectSingleNode("float") != null){
			return /^-?\d+(\.\d+)?$/.test(element.val());
		}	
		return true;
	},
	//验证最小值
	validateMinValue: function(xmlElement, element, errorMessages){
		if(element.val()=="") return true;
		var xmlValidate = xmlElement.selectSingleNode("minValue");
		if( xmlValidate != null){
			try{
				var minValue = xmlValidate.getAttribute("value");
				if(parseFloat(element.val()) < parseFloat(minValue)){
					return false;	
				}
				return true;
			}catch(e){
				return false;	
			}
		}	
		return true;
	},
	//验证最小值
	validateMaxValue: function(xmlElement, element, errorMessages){
		if(element.val()=="") return true;
		var xmlValidate = xmlElement.selectSingleNode("maxValue");
		if( xmlValidate != null){
			try{
				var maxValue = xmlValidate.getAttribute("value");
				if(parseFloat(element.val()) > parseFloat(maxValue)){
					return false;	
				}
				return true;
			}catch(e){
				return false;	
			}
		}	
		return true;
	},
	//验证是否equal
	validateEqual:  function(xmlElement, element, errorMessages){
		if(element.val()=="") return true;
		var xmlValidate = xmlElement.selectSingleNode("equal");
		if(xmlValidate != null){
			var elementId = xmlValidate.getAttribute("to");
			var value = xmlValidate.getAttribute("value");
			if(elementId!=null){
			 	return parseFloat( element.val() ) != parseFloat( $("#"+elementId).val() );
			}else{
				return parseFloat(element.val()) != parseFloat(value);
			}
		}	
		return true;
	},
	//验证是否GreatThan
	validateGreatThan:  function(xmlElement, element, errorMessages){
		if(element.val()=="") return true;
		var xmlValidate = xmlElement.selectSingleNode("great-than");
		if(xmlValidate != null){
			var elementId = xmlValidate.getAttribute("to");
			var value = xmlValidate.getAttribute("value");
			try{
				if(/^[\d]{4}[\-|\/\.][\d]{2}[\-|\/\.][\d]{2}$/.test(element.val()))
				{
					if(elementId!=null){
						return compareDate(element.val(),$("#"+elementId).val());
					}else{
						return compareDate(element.val(),value);
					}
				}else{
					if(elementId!=null){
						return parseFloat(element.val()) > parseFloat($("#"+elementId).val());
					}else{
						return parseFloat(element.val()) > parseFloat(value);
					}
				}
			}catch(e){
				return false;
			}
		}	
		return true;
	},
	//验证是否LessThan
	validateLessThan:  function(xmlElement, element, errorMessages){
		if(element.val()=="") return true;
		var xmlValidate = xmlElement.selectSingleNode("less-than");
		if(xmlValidate != null){
			var elementId = xmlValidate.getAttribute("to");
			var value = xmlValidate.getAttribute("value");
			try{
				if(/^[\d]{4}[\-|\/\.][\d]{2}[\-|\/\.][\d]{2}$/.test(element.val()))
				{
					if(elementId!=null){
						return !compareDate(element.val(),$("#"+elementId).val());
					}else{
						return !compareDate(element.val(),value);
					}
				}else{
					if(elementId!=null){
						return parseFloat(element.val()) <= parseFloat($("#"+elementId).val());
					}else{
						return parseFloat(element.val()) <= parseFloat(value);
					}
				}
			}catch(e){
				return false;
			}
		}	
		return true;
	},
	//验证ip
	validateIp:function(xmlElement, element, errorMessages){
		if(element.val()=="") return true;
		if(xmlElement.selectSingleNode("ip") != null){
			return /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(element.val());
		}	
		return true;
	}, 
	//电话
	validatePhone: function(xmlElement, element, errorMessages){
		if(element.val()=="") return true;
		if(xmlElement.selectSingleNode("phone") != null){
			return /^((0[1-9]{3})?(0[12][0-9])?[-])?\d{6,8}$/.test(element.val());
		}	
		return true;
	}, 
	//手机
	validateMobilePhone: function(xmlElement, element, errorMessages){
		if(element.val()=="") return true;
		if(xmlElement.selectSingleNode("phone") != null){
			return /^((0[1-9]{3})?(0[12][0-9])?[-])?\d{6,8}$/.test(element.val());
		}	
		return true;
	}, 
	//ajax验证
	validateAjax: function(xmlElement, element, errorMessages){
		var xmlAjax = xmlElement.selectSingleNode("ajax");
		if(xmlAjax != null){
			var ajaxUrl = xmlAjax.getAttribute("url");
			if(ajaxUrl == null) return false;
			if(element.val()=="") return false;
			var result = false;
			$.ajax({
				type: "GET",
				url: ajaxUrl,
				data: element.get(0).id + "=" + element.val(),
				success: function(data){result =(data=="true"?true:false);},
				error: function(){result=false;}
			});
			return result;
		}
		return true;
	}
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -