📄 jquery.validate.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 + -