文章目录
  1. 1. Validator.js

Validator.js

Validator = {

     Require : /.+/,

     Email :
/^\w+([-+.]\w+)* \w+([-.]\w+)*\.\w+([-.]\w+)*$/,

     Phone :
/^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,11}(\-\d{1,6})?$/,

     Mobile :
/^(852\d{8})|(((\(\d{2,3}\))|(\d{3}\-))?((13\d{9})|(15\d{9})|(18\d{9})))$/,

     Url :
/^(https|http):\/\/[A-Za-z0-9-]+\.[A-Za-z0-9-]+[\/=\?%\-&_~` [\]\‘:+!]*([^<>\“\“])*$/,

     IdCard : “this.IsIdCard(value)”,

     Currency : /^\d+(\.\d+)?$/,

     Number : /^\d+$/,

     Zip : /^[0-9]\d{5}$/,

     QQ : /^[1-9]\d{4,9}$/,

     Integer : /^[-\+]?\d+$/,

     Double : /^[-\+]?\d+(\.\d+)?$/,

     English : /^[A-Za-z]+$/,

     Chinese : /^[\u0391-\uFFE5]+$/,

     Username : /^[a-z]\w{3,}$/i,

    Permaname : /^[A-Za-z]{1,}[0-9A-Za-z\-\_]{3,}$/i,

     UnSafe :
/^(([A-Z]*|[a-z]*|\d*|[-_\~! #\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\‘\“]*)|.{0,5})$|\s/,

     IsSafe : function(str){return !this.UnSafe.test(str);},

     SafeString : “this.IsSafe(value)”,

     Filter : “this.DoFilter(value, getAttribute(‘accept’))”,

     Limit : “this.limit(value.length,getAttribute(‘min’),
getAttribute(‘max’))”,

     LimitB : “this.limit(this.LenB(value), getAttribute(‘min’),
getAttribute(‘max’))”,

     LimitC : “this.limit(this.LenC(value), getAttribute(‘min’),
getAttribute(‘max’))”,

     Date : “this.IsDate(value, getAttribute(‘min’),
getAttribute(‘format’))”,

     Repeat : “value ==
document.getElementsByName(getAttribute(‘to’))[0].value”,

     Range : “parseFloat(getAttribute(‘min’)) <= parseFloat(value) &&
parseFloat(value) <= parseFloat(getAttribute(‘max’))”,

     Compare :
“this.compare(value,getAttribute(‘operator’),getAttribute(‘to’))”,

     Custom : “this.Exec(value, getAttribute(‘regexp’))”,

     Group : “this.MustChecked(getAttribute(‘name’),
getAttribute(‘min’), getAttribute(‘max’))”,

     ErrorItem : [document.forms[0]],

     ErrorMessage :
[“温馨提示:由于以下可能原因,您需要调整输入信息。\t\t\t\t\n”],

\

     Validate : function(){

     var theForm;

          var mode;

          switch(arguments.length)

          {

               case 0:

                theForm = document.forms[0];

                mode = 1;

                break;

               case 1:

                    if(typeof(arguments[0])==”object”)

                         theForm = arguments[0];

                    else

                         theForm = document.forms[arguments[0]];

                    mode = 1;

                    break;

               case 2:

               default:

                    if(typeof(arguments[0])==”object”)

                         theForm = arguments[0];

                    else

                         theForm = document.forms[arguments[0]];

                    mode = arguments[1];

                    break;

          }

\

          var obj = theForm || event.srcElement;

          var count = obj.elements.length;

          this.ErrorMessage.length = 1;

          this.ErrorItem.length = 1;

          this.ErrorItem[0] = obj;

          var checkwithObject = null;

          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(“checkwith”)!=null)

                    {

                         var _theObj=getAttribute(“checkwith”);

                         var _unionObjs=
document.getElementsByName(_theObj);

                         var iIndex;

                         if(_unionObjs.length > 0)

                         {

                             
for(iIndex=0;iIndex<_unionObjs.length;iIndex++)

                              {

                                   if(value ==
“”&&_unionObjs[iIndex].value!=””)

                                        break;

                              }

                              if(iIndex <     _unionObjs.length)

                                   continue;

                         }

                    }

//alert(getAttribute(“id”));

//alert(getAttribute(“require”));

                    if(getAttribute(“require”) == “false” && value ==
“”)

                         continue;

\

                    switch(_dataType){

                         case “IdCard” :

                         case “Date” :

                         case “Repeat” :

                         case “Range” :

                         case “Compare” :

                         case “Custom” :

                         case “Group” :

                         case “Limit” :

                         case “LimitB” :

                         case “LimitC” :

                         case “SafeString” :

                         case “Filter” :

                         if(!eval(this[_dataType])) {

                              this.AddError(i, getAttribute(“msg”));

                         }

                         break;

                         default :

                         if(!this[_dataType].test(value)){

                              this.AddError(i, getAttribute(“msg”));

                         }

                         break;

               }

          }

     }

\

     if(this.ErrorMessage.length > 1){

          mode = mode || 1;

          var errCount = this.ErrorItem.length;

          switch(mode){

               case 2 :

                    for(var i=1;i<errCount;i++)

                    {

                         this.ErrorItem[i].style.color = “red”;

                         this.ErrorItem[i].style.borderColor = “red”;

                    }

                    case 1 :

                         alert(this.ErrorMessage.join(“\n”));

                    try

                    {

                         this.ErrorItem[1].focus();

                    }

                    catch(bb){break;}

                    break;

          case 3 :

                    for(var i=1;i<errCount;i++){

                         try{

                         this.ErrorItem[i].style.borderColor = “red”;

                         var span = document.createElement(“SPAN”);

                         span.id =
“__ErrorMessagePanel”;

                         span.style.color = “red”;

                        
this.ErrorItem[i].parentNode.appendChild(span);

                         span.innerHTML =
this.ErrorMessage[i].replace(/\d+:/,”*“);

                         }

                         catch(e){alert(e.description);}

                    }

                    this.ErrorItem[1].focus();

                    break;

                    default :

                    alert(this.ErrorMessage.join(“\n”));

                    break;

               }

               return false;

          }

          return true;

     },

\

limit : function(len,min, max){

min = min || 0;

max = max || Number.MAX_VALUE;

return min <= len && len <= max;

},

LenB : function(str){

return str.replace(/[^\x00-\xff]/g,”**“).length;

},

LenC : function(str){

     var exp = /^[A-Za-z0-9]+$/;

     if(!exp.test(str))

     {

          return 0;

     }

return str.replace(/[^\x00-\xff]/g,”**“).length;

},

ClearState : function(elem){

with(elem){

style.color = “”;

style.borderColor=””;

var lastNode = parentNode.childNodes[parentNode.childNodes.length-1];

if(lastNode.id == “__ErrorMessagePanel”)

parentNode.removeChild(lastNode);

}

},

AddError : function(index, str){

this.ErrorItem[this.ErrorItem.length] =
this.ErrorItem[0].elements[index];

this.ErrorMessage[this.ErrorMessage.length] = this.ErrorMessage.length

  • “:” + str;

},

Exec : function(op, reg){

return new RegExp(reg,”g”).test(op);

},

compare : function(op1,operator,op2){

switch (operator) {

case “NotEqual”:

return (op1 != op2);

case “GreaterThan”:

return (op1 > op2);

case “GreaterThanEqual”:

return (op1 >= op2);

case “LessThan”:

return (op1 < op2);

case “LessThanEqual”:

return (op1 <= op2);

default:

return (op1 == op2);

}

},

MustChecked : function(name, min, max){

var groups = document.getElementsByName(name);

var hasChecked = 0;

min = min || 1;

max = max || groups.length;

for(var i=groups.length-1;i>=0;i–)

if(groups[i].checked) hasChecked++;

return min <= hasChecked && hasChecked <= max;

},

DoFilter : function(input, filter){

     exp_str1 = filter.split(“,”).join(“|”);

     exp_str2 = exp_str1.replace(/\s+/g,””);

     return new RegExp(“^.+\.(?=EXT)(EXT)$“.replace(/EXT/g,
exp_str2), “gi”).test(input);

},

IsIdCard : function(number){

var date, Ai;

var verify = “10x98765432”;

var verify2 = “10x98765432”;

var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];

var area =
[‘’,’’,’’,’’,’’,’’,’’,’’,’’,’’,’’,’北京’,’天津’,’河北’,’山西’,’内蒙古’,’’,’’,’’,’’,’’,’辽宁’,’吉林’,’黑龙江’,’’,’’,’’,’’,’’,’’,’’,’上海’,’江苏’,’浙江’,’安微’,’福建’,’江西’,’山东’,’’,’’,’’,’河南’,’湖北’,’湖南’,’广东’,’广西’,’海南’,’’,’’,’’,’重庆’,’四川’,’贵州’,’云南’,’西藏’,’’,’’,’’,’’,’’,’’,’陕西’,’甘肃’,’青海’,’宁夏’,’新疆’,’’,’’,’’,’’,’’,’台湾’,’’,’’,’’,’’,’’,’’,’’,’’,’’,’香港’,’澳门’,’’,’’,’’,’’,’’,’’,’’,’’,’国外’];

var re =
number.match(/^(\d{2})\d{4}(((\d{2})(\d{2})(\d{2})(\d{3}))|((\d{4})(\d{2})(\d{2})(\d{3}[x\d])))$/i);

if(re == null) return false;

if(re[1] >= area.length || area[re[1]] == “”) return false;

if(re[2].length == 12){

Ai = number.substr(0, 17);

date = [re[9], re[10], re[11]].join(“-“);

}

else{

Ai = number.substr(0, 6) + “19” + number.substr(6);

date = [“19” + re[4], re[5], re[6]].join(“-“);

}

if(!this.IsDate(date, “ymd”)) return false;

var sum = 0;

for(var i = 0;i<=16;i++){

sum += Ai.charAt(i) * Wi[i];

}

Ai +=verify.charAt(sum%11);

return (number.length ==15 || number.length == 18 &&
number.toLowerCase() == Ai);

},

IsDate : function(op, formatString)

{

formatString = formatString || “ymd”;

var m, year, month, day;

switch(formatString){

case “ymd” :

m = op.match(new
RegExp(“^((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})$“));

if(m == null ) return false;

day = m[6];

month = m[5]*1;

year = (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3],
10));

break;

case “dmy” :

m = op.match(new
RegExp(“^(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))$“));

if(m == null ) return false;

day = m[1];

month = m[3]*1;

year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6],
10));

break;

default :

break;

}

if(!parseInt(month)) return false;

month = month==0 ?12:month;

var date = new Date(year, month-1, day);

return (typeof(date) == “object” && year == date.getFullYear() && month
== (date.getMonth()+1) && day == date.getDate());

function GetFullYear(y){return ((y<30 ? “20” : “19”) + y)|0;}

}

}

\

\

function checkEmail()

{

\

     var form1 = document.forms[‘form1’];

\

     if(form1.elements[‘sEmail’].value == “”)

     {

          form1.elements[‘checkbox’].checked = false;

          alert(“您没有设置接收邮件email!”);

          form1.elements[‘sEmail’].focus();

     }

}

function checkMobile()

{

     var form1 = document.forms[‘form1’];

     if(form1.elements[‘sMobile’].value == “”)

     {

          form1.elements[‘checkbox2’].checked = false;

          alert(“您没有设置接收信息手机!”);

          form1.elements[‘sMobile’].focus();

     }

}

function checkQQOnInput()

{

     var form1 = document.forms[‘form1’];

     var exp = eval(“/^[1-9]\d{4,9}$/“);

     if(form1.elements[‘u’].value.length == 0)

     {

          return;

     }

     if(!exp.test(form1.elements[‘u’].value))

     {

          alert(“请输入正确的qq号!”);

          form1.elements[‘u’].value=””;

     }

}

//add by eddyma:forbidden input chinese

function checkChineseInput(obj)

{

     var form1 = document.forms[‘form1’];

     var name = obj.name;

     var exp = eval(“/^[\u0391-\uFFE5]+$/“);

     if(exp.test(form1.elements[name].value))

     {

          alert(“不可以为中文!”);

          form1.elements[name].value = “”;

     }

}

文章目录
  1. 1. Validator.js