📄 validator.js
字号:
// JavaScript Document
/********************************************************************
主题:表单验证类(Dec.2005)
作者:(原作者)我佛山人/(续貂者)Issac
********************************************************************/
function Validator(xmlFile, xmlNode, msgCss) {
this.Obj=null;
this.xmlFile = xmlFile || "Javascript/validator.xml";
this.xmlNode = xmlNode || "initMsg,errMsg,okMsg,msg,id,value"; //前三个为一级节点名,后一个为二级公用节点名
this.initNode = this.xmlNode.split(",")[0].replace(/\s/gi,"");
this.errNode = this.xmlNode.split(",")[1].replace(/\s/gi,"");
this.okNode = this.xmlNode.split(",")[2].replace(/\s/gi,"");
this.msgNode = this.xmlNode.split(",")[3].replace(/\s/gi,"");
this.IdAttr = this.xmlNode.split(",")[4].replace(/\s/gi,"");
this.ValueAttr = this.xmlNode.split(",")[5].replace(/\s/gi,"");
this.msgCss = msgCss || "valMsgInit,valMsgFocus,valMsgErr,valMsgOk";
var _initCss = this.msgCss.split(",")[0].replace(/\s/gi,"");
var _focusCss = this.msgCss.split(",")[1].replace(/\s/gi,"");
var _errCss = this.msgCss.split(",")[2].replace(/\s/gi,"");
var _okCss = this.msgCss.split(",")[3].replace(/\s/gi,"");
if (window.ActiveXObject) //For IE
this.xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
else if (document.implementation&&document.implementation.createDocument) //For Mozilla
this.xmlDoc=document.implementation.createDocument("","doc",null);
else {
alert("很抱歉,您的浏览器暂不支持该脚本,建议使用IE6!");
return;
}
this.xmlDoc.async = false;
this.xmlDoc.preserveWhiteSpace = true;
this.xmlDoc.load(this.xmlFile);
this.InitNode = this.xmlDoc.getElementsByTagName(this.initNode)[0].getElementsByTagName(this.msgNode);
this.ErrNode = this.xmlDoc.getElementsByTagName(this.errNode)[0].getElementsByTagName(this.msgNode);
this.OkNode = this.xmlDoc.getElementsByTagName(this.okNode)[0].getElementsByTagName(this.msgNode);
this.InitPage = function(theForm) {
var obj = theForm || document.forms[0];
var count = obj.elements.length;
for (var i=0; i<count; i++)
with (obj.elements[i]) {
if (typeof(getAttribute("msg"))=="object"||getAttribute("msg").split(",").length!=4)
continue;
var _msgId = getAttribute("msg").split(",")[0].replace(/\s/gi,"");
var _initMsg = getAttribute("msg").split(",")[1].replace(/\s/gi,"");
var _errMsg = getAttribute("msg").split(",")[2].replace(/\s/gi,"");
var _okMsg = getAttribute("msg").split(",")[3].replace(/\s/gi,"");
if (_msgId=="")
continue;
setAttribute("msgId",_msgId);
if (_initMsg=="")
setAttribute("initMsg","");
else
for (var j=0; j<this.InitNode.length; j++)
if (this.InitNode[j].getAttribute(this.IdAttr)==_initMsg) {
setAttribute("initMsg",this.InitNode[j].getAttribute(this.ValueAttr));
break;
}
if (_errMsg=="")
setAttribute("errMsg","");
else
for (j=0; j<this.ErrNode.length; j++)
if (this.ErrNode[j].getAttribute(this.IdAttr)==_errMsg) {
setAttribute("errMsg",this.ErrNode[j].getAttribute(this.ValueAttr));
break;
}
if (_okMsg=="")
setAttribute("okMsg","");
else
for (j=0;j<this.OkNode.length; j++)
if (this.OkNode[j].getAttribute(this.IdAttr)==_okMsg) {
setAttribute("okMsg",this.OkNode[j].getAttribute(this.ValueAttr));
break;
}
with (document.getElementById(getAttribute("msgId"))) {
innerHTML = obj.elements[i].getAttribute("initMsg");
className = _initCss;
obj.elements[i].onfocus = function() {
className = (className==_initCss)?_focusCss:className;
}
obj.elements[i].onblur = function() {
className = (className==_focusCss)?_initCss:className;
//obj.elements[i].value = obj.elements[i].value.replace(/<[^<]+>/gi,""); //No HTML Tag
}
style.display = (innerHTML=="")?"none":"block";
}
}
};
/***以下主要参见于我佛山人-Validator1.05***/
/*Validator.Properties(属性)*/
this.Chinese = /^[\u0391-\uFFE5]+$/;
this.Currency = /^\d+(\.\d+)?$/;
this.Double = /^[-\+]?\d+(\.\d+)?$/;
this.Email = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
this.IEmail = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
this.English = /^[A-Za-z]+$/;
this.Integer = /^[-\+]?\d+$/;
this.Mobile = /^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$/;
this.Number = /^\d+$/;
this.Password = /^[\w!@#\$%\^&\*\(\)]{6,20}$/;
this.UnSafe = /^(([A-Z]*|[a-z]*|\d*|[\~!@#\$%\^&\*\(\)-_=+\\\|\[\]\{\};:\'\",\.<>\/\?]*)|.{0,5})$|\s/;
this.LowSafe = /^([A-Za-z]+|\d+|[_!@#\$%\^&\*\(\)]+)$/;
this.MidSafe = /^([A-Za-z0-9]+|[A-Za-z_!@#\$%\^&\*\(\)]+|[\d_!@#\$%\^&\*\(\)]+)$/;
this.HighSafe = /^([\w!@#\$%\^&\*\(\)]+)$/;
this.Phone = /^(0{0,2}[1-9]\d{0,3}-)?(0?[1-9]\d{1,2}-)?[1-9]\d{6,7}(-\d{1,4})?(,[1-9]\d{6,7}(-\d{1,4})?)*$/;
this.PhoneCountry = /^0{0,2}[1-9]\d{0,3}$/;
this.PhoneArea = /^0?[1-9]\d{1,2}$/;
this.PhoneNum = /^[1-9]\d{6,7}(-\d{1,4})?(,[1-9]\d{6,7}(-\d{1,4})?)*$/;
this.QQ = /^[1-9]\d{4,8}$/;
this.Require = /.+/;
this.Url = /^http:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?$/;
this.Username = /^\w{4,20}$/;
this.Zip = /^[1-9]\d{5}$/;
this.Range = "getAttribute('min') < (value|0) && (value|0) < getAttribute('max')";
this.Repeat = "value == document.getElementById(getAttribute('to')).value";
this.Limit = "this.limit(value.length,getAttribute('min'), getAttribute('max'))";
this.LimitB = "this.limit(this.LenB(value), getAttribute('min'), getAttribute('max'))";
this.Custom = "this.Exec(value, getAttribute('regexp'))";
this.Compare = "this.compare(value,getAttribute('operator'),getAttribute('to'))";
this.SafeString = "this.IsSafe(value)";
this.IdCard = "this.IsIdCard(value)";
this.Date = "this.IsDate(value, getAttribute('min'), getAttribute('format'))";
this.Group = "this.MustChecked(getAttribute('name'), getAttribute('min'), getAttribute('max'))";
this.Filter = "this.DoFilter(value, getAttribute('accept'))";
this.Count = "this.DoCount(obj)";
this.SafeLevel = "this.DoSafeLevel(obj)";
this.ErrorItem = [document.forms[0]];
this.ErrorMessage = ["以下原因导致提交失败:\t\t\t\t"];
/*Validator.Methods(方法)*/
this.ValSubmit = function(theForm){
var obj = theForm || event.srcElement;
var count = obj.elements.length;
this.ErrorMessage.length = 1;
this.ErrorItem.length = 1;
this.ErrorItem[0] = obj;
for(var i=0;i<count;i++)
with(obj.elements[i]){
var _dataType = getAttribute("dataType");
if(typeof(_dataType) == "object" || typeof(this[_dataType]) == "undefined")
continue;
this.ClearState(obj.elements[i]);
if(getAttribute("require") == "false" && value == "")
continue;
this.SwitchType(obj.elements[i],i);
}
if(this.ErrorMessage.length > 1){
var errCount = this.ErrorItem.length;
this.ErrorItem[1].focus();
return false;
}
return true;
};
this.ValChange = function (theField) {
var obj = theField || event.srcElement;
with(obj){
var _dataType = getAttribute("dataType");
if(typeof(_dataType) == "object" || typeof(this[_dataType]) == "undefined")
return;
if(getAttribute("require") == "false" && value == "")
return;
this.SwitchType(obj);
}
};
this.SwitchType = function (obj, i) {
with (obj) {
if (i==null && typeof(getAttribute("disChanged"))=="string")
return;
var _dataType = getAttribute("dataType");
var oMsgDiv = document.getElementById(getAttribute("msgId"));
switch(_dataType){
case "IdCard" :
case "Date" :
case "Repeat" :
case "Range" :
case "Compare" :
case "Custom" :
case "Group" :
case "Limit" :
case "LimitB" :
case "SafeString" :
case "Filter" :
if(!eval(this[_dataType])) {
oMsgDiv.innerHTML = getAttribute("errMsg") + getAttribute("initMsg");
oMsgDiv.className = _errCss;
if (i!=null)
this.AddError(i, getAttribute("errMsg")+getAttribute("initMsg"));
}
else {
oMsgDiv.innerHTML = getAttribute("okMsg");
oMsgDiv.className = _okCss;
}
break;
case "Username":
if(!this[_dataType].test(value)) {
oMsgDiv.innerHTML = getAttribute("errMsg") + getAttribute("initMsg");
oMsgDiv.className = _errCss;
if (i!=null)
this.AddError(i, getAttribute("errMsg")+getAttribute("initMsg"));
}
else if(IsExistUserName(this.Obj)){
oMsgDiv.innerHTML = "当前用户名已存在,请重新填写!";
oMsgDiv.className = _errCss;
if (i!=null)
this.AddError(i, getAttribute("errMsg")+getAttribute("initMsg"));
}
else {
oMsgDiv.innerHTML = getAttribute("okMsg");
oMsgDiv.className = _okCss;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -