📄 formvalidator.js
字号:
//====================================================================================================
// [插件名称] jQuery formValidator
//----------------------------------------------------------------------------------------------------
// [描 述] jQuery formValidator表单验证插件,它是基于jQuery类库,实现了js脚本于页面的分离。对一个表
// 单对象,你只需要写一行代码就可以轻松实现20种以上的脚本控制。现支持一个表单元素累加很多种
// 校验方式,采用配置信息的思想,而不是把信息写在表单元素上,能比较完美的实现ajax请求。
//----------------------------------------------------------------------------------------------------
// [作者网名] 猫冬
// [日 期] 2008-01-11
// [邮 箱] wzmaodong@126.com
// [作者博客] http://wzmaodong.cnblogs.com
//====================================================================================================
var jQuery_formValidator_initConfig;
(function($) {
$.formValidator =
{
sustainType : function(id,setting)
{
var elem = $("#"+id).get(0);
var srcTag = elem.tagName;
var stype = elem.type;
switch(setting.validateType)
{
case "InitValidator":
return true;
case "InputValidator":
if (srcTag == "INPUT" || srcTag == "TEXTAREA" || srcTag == "SELECT") return true;
return false;
case "CompareValidator":
if (srcTag == "INPUT" || srcTag == "TEXTAREA")
{
if (stype == "checkbox" || stype == "radio") return false;
return true;
}
return false;
case "AjaxValidator":
if (stype == "text" || stype == "textarea" || stype == "file" || stype == "select-one") return true;
return false;
case "RegexValidator":
if (srcTag == "INPUT" || srcTag == "TEXTAREA")
{
if (stype == "checkbox" || stype == "radio") return false;
return true;
}
return false;
}
},
initConfig : function(controlOptions)
{
var settings =
{
validatorGroup : "1",
alertMessage:false,
onSuccess: function() {return true;},
onError:function() {},
submitOnce:false
};
controlOptions = controlOptions || {};
$.extend(settings, controlOptions);
if (jQuery_formValidator_initConfig == null ) jQuery_formValidator_initConfig = new Array();
jQuery_formValidator_initConfig.push( settings );
},
appendValid : function(id, setting )
{
if(!$.formValidator.sustainType(id,setting)) return -1;
var srcjo = $("#"+id).get(0);
if (setting.validateType=="InitValidator" || !srcjo.settings || srcjo.settings == undefined ) srcjo.settings = new Array();
var len = srcjo.settings.push( setting );
srcjo.settings[len - 1].index = len - 1;
return len - 1;
},
getInitConfig : function( validatorGroup )
{
if(jQuery_formValidator_initConfig!=null)
{
for(i=0;i<jQuery_formValidator_initConfig.length;i++)
{
if(validatorGroup==jQuery_formValidator_initConfig[i].validatorGroup)
return jQuery_formValidator_initConfig[i];
}
}
return null;
},
triggerValidate : function(id, setting)
{
switch(setting.validateType)
{
case "InputValidator":
$.formValidator.InputValid(id, setting);
break;
case "CompareValidator":
$.formValidator.CompareValid(id, setting);
break;
case "AjaxValidator":
$.formValidator.AjaxValid(id, setting);
break;
case "RegexValidator":
$.formValidator.RegexValid(id, setting);
break;
}
},
SetTipState : function(tipid,showclass,showmsg)
{
var tip = $("#"+tipid);
tip.removeClass();
tip.addClass( showclass );
tip.html( showmsg );
},
SetFailState : function(tipid,showmsg)
{
var tip = $("#"+tipid);
tip.removeClass();
tip.addClass( "onError" );
tip.html( showmsg );
},
ShowMessage : function(returnObj)
{
var id = returnObj.id;
var isValid = returnObj.isValid;
var setting = returnObj.setting;
var showmsg = "";
var settings = $("#"+id).get(0).settings;
var showclass = ""
if (!isValid)
{
if(setting.validateType=="AjaxValidator")
{
if(setting.lastValid=="")
{
showclass = "onLoad";
showmsg = setting.onwait;
}
else
{
showclass = "onError";
showmsg = setting.onerror;
}
}
else
{
showmsg = setting.onerror;
showclass = "onError";
}
if($.formValidator.getInitConfig(settings[0].validatorGroup).alertMessage)
{
var elem = $("#"+id).get(0);
if(elem.validoldvalue!=$(elem).val()) alert(showmsg);
}
else
{
$.formValidator.SetTipState(settings[0].tipid,showclass,showmsg);
}
}
else
{
if(!$.formValidator.getInitConfig(setting.validatorGroup).alertMessage)
{
var showmsg = "";
if ( $.formValidator.IsEmpty(id) )
showmsg = setting.onempty;
else
showmsg = setting.oncorrect;
$.formValidator.SetTipState(setting.tipid,"onSuccess",showmsg);
}
}
},
GetLength : function(id)
{
var srcjo = $("#"+id);
sType = srcjo.get(0).type;
var len = 0;
switch(sType)
{
case "text":
case "hidden":
case "password":
case "textarea":
case "file":
var val = srcjo.val();
for (var i = 0; i < val.length; i++)
{
if (val.charCodeAt(i) >= 0x4e00 && val.charCodeAt(i) <= 0x9fa5)
len += 2;
else
len++;
}
break;
case "checkbox":
case "radio":
len = $("input[@type='"+sType+"'][@name='"+srcjo.attr("name")+"'][@checked]").length;
break;
case "select-one":
return srcjo.get(0).options.selectedIndex;
}
return len;
},
IsEmpty : function(id)
{
if($("#"+id).get(0).settings[0].empty && $.formValidator.GetLength(id)==0)
return true;
else
return false;
},
IsOneValid : function(id)
{
return OneIsValid(id,1).isValid;
},
OneIsValid : function (id,index)
{
var returnObj = new Object();
returnObj.id = id;
returnObj.ajax = -1;
returnObj.additional = false;
var elem = $("#"+id).get(0);
var settings = elem.settings;
var settingslen = settings.length;
returnObj.setting = settings[0];
if($.formValidator.IsEmpty(id))
{
returnObj.isValid = true;
}
else
{
for ( var i = index ; i < settingslen ; i ++ )
{
returnObj.setting = settings[i];
if(settings[i].validateType!="AjaxValidator")
$.formValidator.triggerValidate(id,settings[i]);
else
returnObj.ajax = i;
if(!settings[i].isValid) {
returnObj.isValid = false;
returnObj.setting = settings[i];
break;
}else{
returnObj.isValid = true;
returnObj.setting = settings[0];
if(settings[i].validateType=="AjaxValidator") break;
}
}
}
if(returnObj.isValid && !returnObj.setting.onvalid($("#"+id).get(0),$("#"+id).val()))
{
settings[settings.length - 1].isValid = false;
returnObj.isValid = false;
returnObj.additional = true;
}
return returnObj;
},
PageIsValid : function (validatorGroup)
{
if(validatorGroup == null || validatorGroup == undefined) validatorGroup = "1";
var isValid = true;
var thefirstid = "";
var returnObj;
var error_tip = "^";
$("form").each(function(i,form1)
{
for(i=0;i<form1.elements.length;i++)
{
elem = form1.elements[i];
if ( elem.settings!=undefined && elem.settings!=null )
{
if(elem.settings[0].validatorGroup==validatorGroup)
{
if($.formValidator.getInitConfig(validatorGroup).alertMessage)
{
if(isValid)
{
returnObj = $.formValidator.OneIsValid(elem.id,1);
if (!returnObj.isValid) {
if(!returnObj.additional) $.formValidator.ShowMessage(returnObj);
isValid = false;
if(thefirstid=="") thefirstid = returnObj.id;
}
}
}
else
{
returnObj = $.formValidator.OneIsValid(elem.id,1);
if (!returnObj.isValid) {
isValid = false;
if (thefirstid == "") thefirstid = returnObj.id;
if (error_tip.indexOf("^" + elem.settings[0].tipid + "^") == -1) {
error_tip = error_tip + elem.settings[0].tipid + "^";
if(!returnObj.additional) $.formValidator.ShowMessage(returnObj);
}
}
else
{
if (error_tip.indexOf("^" + elem.settings[0].tipid + "^") == -1) {
$.formValidator.ShowMessage(returnObj);
}
}
}
}
}
};
});
if(isValid)
{
isValid = $.formValidator.getInitConfig(validatorGroup).onSuccess();
if($.formValidator.getInitConfig(validatorGroup).submitOnce){$("input[@type='submit']").attr("disabled",true);}
}
else
{
$.formValidator.getInitConfig(validatorGroup).onError();
if(thefirstid!="") $("#"+thefirstid).focus();
}
return isValid;
},
AjaxValid : function(id, setting)
{
var srcjo = $("#"+id);
var ls_url = setting.url;
if (srcjo.size() == 0 && srcjo.get(0).settings[0].empty) {
returnObj.setting = $("#"+id).get(0).settings[0];
returnObj.isValid = true;
$.formValidator.ShowMessage(returnObj);
setting.isValid = true;
return;
}
if(setting.addidvalue)
{
var parm = id+"="+escape(srcjo.val());
ls_url = ls_url + ((ls_url).indexOf("?")>0?("&"+ parm) : ("?"+parm));
}
$.ajax(
{
type : setting.type,
url : ls_url,
data : setting.data,
async : setting.async,
dataType : setting.datatype,
success : function(data){
setting0 = srcjo.get(0).settings[0];
if(setting.success(data))
{
$.formValidator.SetTipState(setting0.tipid,"onSuccess",setting0.oncorrect);
setting.isValid = true;
}
else
{
$.formValidator.SetTipState(setting0.tipid,"onError",setting.onerror);
setting.isValid = false;
}
},
complete : setting.complete,
beforeSend : function(){
var isvalid = setting.beforesend();
if(isvalid) setting.isValid = false;
setting.lastValid = "-1";
return setting.beforesend;
},
error : function(){
setting0 = srcjo.get(0).settings[0];
$.formValidator.SetTipState(setting0.tipid,"onError",setting.onerror);
setting.isValid = false;
setting.error();
},
processData : setting.processdata
});
},
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -