现在的位置: 首页 > 综合 > 正文

收藏的超强表单验证类

2018年05月15日 ⁄ 综合 ⁄ 共 22281字 ⁄ 字号 评论关闭
Java代码
  1.  <title>表单验证类 Validator v1.01</title>   
  2.  <style>   
  3.  body,td{font:normal 12px Verdana;color:#333333}   
  4.  input,textarea,select,td{font:normal 12px Verdana;color:#333333;border:1px solid #999999;background:#ffffff}   
  5.  table{border-collapse:collapse;}   
  6.  td{padding:3px}   
  7.  input{height:20;}   
  8.  textarea{width:80%;height:50px;overfmin:auto;}   
  9.  form{display:inline}   
  10.  </style>   
  11.  <table align="center">   
  12.   <form name="theForm" id="demo" action="" method="get" onSubmit="return Validator.Validate(this,2)">   
  13.     <tr>   
  14.    <td>真实姓名:</td><td><input name="Name" dataType="Chinese" msg="真实姓名只允许中文"></td>   
  15.   </tr>   
  16.   <tr>   
  17.    <td>英文名:</td><td><input name="Nick" dataType="English" require="false" msg="英文名只允许英文字母"></td>   
  18.   </tr>   
  19.     <tr>   
  20.    <td>主页:</td><td><input name="Homepage" require="false" dataType="Url"   msg="非法的Url"></td>   
  21.   </tr>   
  22.   <tr>   
  23.    <td>密码:</td><td><input name="Password" dataType="SafeString"   msg="密码不符合安全规则" type="password"></td>   
  24.   </tr>   
  25.   <tr>   
  26.    <td>重复:</td><td><input name="Repeat" dataType="Repeat" to="Password" msg="两次输入的密码不一致" type="password"></td>   
  27.   </tr>   
  28.   <tr>   
  29.    <td>信箱:</td><td><input name="Email" dataType="Email" msg="信箱格式不正确"></td>   
  30.   </tr>   
  31.     <tr>   
  32.    <td>信箱:</td><td><input name="Email" dataType="Repeat" to="Email" msg="两次输入的信箱不一致"></td>   
  33.   </tr>   
  34.   <tr>   
  35.    <td>QQ:</td><td><input name="QQ" require="false" dataType="QQ" msg="QQ号码不存在"></td>   
  36.   </tr>   
  37.     <tr>   
  38.    <td>身份证:</td><td><input name="Card" dataType="IdCard" msg="身份证号码不正确"></td>   
  39.   </tr>   
  40.   <tr>   
  41.    <td>年龄:</td><td><input name="Year" dataType="Range" msg="年龄必须在18~28之间" min="18" max="28"></td>   
  42.   </tr>   
  43.    <tr>   
  44.    <td>年龄1:</td><td><input name="Year1" require="false" dataType="Compare" msg="年龄必须在18以上" to="18" operator="GreaterThanEqual"></td>   
  45.   </tr>   
  46.    <tr>   
  47.    <td>电话:</td><td><input name="Phone" require="false" dataType="Phone" msg="电话号码不正确"></td>   
  48.   </tr>   
  49.    <tr>   
  50.    <td>手机:</td><td><input name="Mobile" require="false" dataType="Mobile" msg="手机号码不正确"></td>   
  51.   </tr>   
  52.      <tr>   
  53.    <td>生日:</td><td><input name="Birthday" dataType="Date" format="ymd" msg="生日日期不存在"></td>   
  54.   </tr>   
  55.    <tr>   
  56.    <td>邮政编码:</td><td><input name="Zip" dataType="Custom" regexp="^[1-9]/d{5}$" msg="邮政编码不存在"></td>   
  57.   </tr>   
  58.   <tr>   
  59.    <td>邮政编码:</td><td><input name="Zip1" dataType="Zip" msg="邮政编码不存在"></td>   
  60.   </tr>   
  61.   <tr>   
  62.    <td>操作系统:</td><td><select name="Operation" dataType="Require"  msg="未选择所用操作系统" ><option value="">选择您所用的操作系统</option><option value="Win98">Win98</option><option value="Win2k">Win2k</option><option value="WinXP">WinXP</option></select></td>   
  63.   </tr>   
  64.   <tr>   
  65.    <td>所在省份:</td><td>广东<input name="Province" value="1" type="radio">陕西<input name="Province" value="2" type="radio">浙江<input name="Province" value="3" type="radio">江西<input name="Province" value="4" type="radio" dataType="Group"  msg="必须选定一个省份" ></td>   
  66.   </tr>   
  67.   <tr>   
  68.    <td>爱好:</td><td>运动<input name="Favorite" value="1" type="checkbox">上网<input name="Favorite" value="2" type="checkbox">听音乐<input name="Favorite" value="3" type="checkbox">看书<input name="Favorite" value="4" type="checkbox"" dataType="Group" min="2" max="3"  msg="必须选择2~3种爱好"></td>   
  69.   </tr>   
  70.    <td>自我介绍:</td><td><textarea name="Description" dataType="Limit" max="10"  msg="自我介绍内容必须在10个字之内">中文是一个字</textarea></td>   
  71.   </tr>   
  72.      <td>自传:</td><td><textarea name="History" dataType="LimitB" min="3" max="10"  msg="自传内容必须在[3,10]个字节之内">中文是两个字节t</textarea></td>   
  73.   </tr>   
  74.   <tr>   
  75.    <td colspan="2"><input name="Submit" type="submit" value="确定提交"><input onClick="Validator.Validate(document.getElementById('demo'))" value="检验模式1" type="button"><input onClick="Validator.Validate(document.getElementById('demo'),2)" value="检验模式2" type="button"><input onClick="Validator.Validate(document.getElementById('demo'),3)" value="检验模式3" type="button"></td>   
  76.   </tr>   
  77.   </form>   
  78.  </table>   
  79.  <script>   
  80.  /*************************************************  
  81.     Validator v1.01  
  82.     code by 我佛山人  
  83.     wfsr@cunite.com  
  84.     http://www.cunite.com  
  85. *************************************************/  
  86.  Validator = {   
  87.     Require : /.+/,   
  88.     Email : /^/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*$/,   
  89.     Phone : /^((/(/d{3}/))|(/d{3}/-))?(/(0/d{2,3}/)|0/d{2,3}-)?[1-9]/d{6,7}$/,   
  90.     Mobile : /^((/(/d{3}/))|(/d{3}/-))?13/d{9}$/,   
  91.     Url : /^http:////[A-Za-z0-9]+/.[A-Za-z0-9]+[//=/?%/-&_~`@[/]/':+!]*([^<>/"/"])*$/,   
  92.     IdCard : /^/d{15}(/d{2}[A-Za-z0-9])?$/,   
  93.     Currency : /^/d+(/./d+)?$/,   
  94.     Number : /^/d+$/,   
  95.     Zip : /^[1-9]/d{5}$/,   
  96.     QQ : /^[1-9]/d{4,8}$/,   
  97.     Integer : /^[-/+]?/d+$/,   
  98.     Double : /^[-/+]?/d+(/./d+)?$/,   
  99.     English : /^[A-Za-z]+$/,   
  100.     Chinese :  /^[/u0391-/uFFE5]+$/,   
  101.     UnSafe : /^(([A-Z]*|[a-z]*|/d*|[-_/~!@#/$%/^&/*/./(/)/[/]/{/}<>/?/////'/"]*)|.{0,5})$|/s/,   
  102.     IsSafe : function(str){return !this.UnSafe.test(str);},   
  103.     SafeString : "this.IsSafe(value)",   
  104.     Limit : "this.limit(value.length,getAttribute('min'),  getAttribute('max'))",   
  105.     LimitB : "this.limit(this.LenB(value), getAttribute('min'), getAttribute('max'))",   
  106.     Date : "this.IsDate(value, getAttribute('min'), getAttribute('format'))",   
  107.     Repeat : "value == document.getElementsByName(getAttribute('to'))[0].value",   
  108.     Range : "getAttribute('min') < value && value < getAttribute('max')",   
  109.     Compare : "this.compare(value,getAttribute('operator'),getAttribute('to'))",   
  110.     Custom : "this.Exec(value, getAttribute('regexp'))",   
  111.     Group : "this.MustChecked(getAttribute('name'), getAttribute('min'), getAttribute('max'))",   
  112.     ErrorItem : [document.forms[0]],   
  113.     ErrorMessage : ["以下原因导致提交失败:/t/t/t/t"],   
  114.     Validate : function(theForm, mode){   
  115.         var obj = theForm || event.srcElement;   
  116.         var count = obj.elements.length;   
  117.         this.ErrorMessage.length = 1;   
  118.         this.ErrorItem.length = 1;   
  119.         this.ErrorItem[0] = obj;   
  120.         for(var i=0;i<count;i++){   
  121.             with(obj.elements[i]){   
  122.                 var _dataType = getAttribute("dataType");   
  123.                 if(typeof(_dataType) == "object" || typeof(this[_dataType]) == "undefined")  continue;   
  124.                 this.ClearState(obj.elements[i]);   
  125.                 if(getAttribute("require") == "false" && value == ""continue;   
  126.                 switch(_dataType){   
  127.                     case "Date" :   
  128.                     case "Repeat" :   
  129.                     case "Range" :   
  130.                     case "Compare" :   
  131.                     case "Custom" :   
  132.                     case "Group" :    
  133.                     case "Limit" :   
  134.                     case "LimitB" :   
  135.                     case "SafeString" :   
  136.                         if(!eval(this[_dataType]))  {   
  137.                             this.AddError(i, getAttribute("msg"));   
  138.                         }   
  139.                         break;   
  140.                     default :   
  141.                         if(!this[_dataType].test(value)){   
  142.                             this.AddError(i, getAttribute("msg"));   
  143.                         }   
  144.                         break;   
  145.                 }   
  146.             }   
  147.         }   
  148.         if(this.ErrorMessage.length > 1){   
  149.             mode = mode || 1;   
  150.             var errCount = this.ErrorItem.length;   
  151.             switch(mode){   
  152.             case 2 :   
  153.                 for(var i=1;i<errCount;i++)   
  154.                     this.ErrorItem[i].style.color = "red";   
  155.             case 1 :   
  156.                 alert(this.ErrorMessage.join("/n"));   
  157.                 this.ErrorItem[1].focus();   
  158.                 break;   
  159.             case 3 :   
  160.                 for(var i=1;i<errCount;i++){   
  161.                 try{   
  162.                     var span = document.createElement("SPAN");   
  163.                     span.id = "__ErrorMessagePanel";   
  164.                     span.style.color = "red";   
  165.                     this.ErrorItem[i].parentNode.appendChild(span);   
  166.                     span.innerHTML = this.ErrorMessage[i].replace(//d+:/,"*");   
  167.                     }   
  168.                     catch(e){alert(e.description);}   
  169.                 }   
  170.                 this.ErrorItem[1].focus();   
  171.                 break;   
  172.             default :   
  173.                 alert(this.ErrorMessage.join("/n"));   
  174.                 break;   
  175.             }   
  176.             return false;   
  177.         }   
  178.         return true;   
  179.     },   
  180.     limit : function(len,min, max){   
  181.         min = min || 0;   
  182.         max = max || Number.MAX_VALUE;   
  183.         return min <= len && len <= max;   
  184.     },   
  185.     LenB : function(str){   
  186.         return str.replace(/[^/x00-/xff]/g,"**").length;   
  187.     },   
  188.     ClearState : function(elem){   
  189.         with(elem){   
  190.             if(style.color == "red")   
  191.                 style.color = "";   
  192.             var lastNode = parentNode.childNodes[parentNode.childNodes.length-1];   
  193.             if(lastNode.id == "__ErrorMessagePanel")   
  194.                 parentNode.removeChild(lastNode);   
  195.         }   
  196.     },   
  197.     AddError : function(index, str){   
  198.         this.ErrorItem[this.ErrorItem.length] = this.ErrorItem[0].elements[index];   
  199.         this.ErrorMessage[this.ErrorMessage.length] = this.ErrorMessage.length + ":" + str;   
  200.     },   
  201.     Exec : function(op, reg){   
  202.         return new RegExp(reg,"g").test(op);   
  203.     },   
  204.     compare : function(op1,operator,op2){   
  205.         switch (operator) {   
  206.             case "NotEqual":   
  207.                 return (op1 != op2);   
  208.             case "GreaterThan":   
  209.                 return (op1 > op2);   
  210.             case "GreaterThanEqual":   
  211.                 return (op1 >= op2);   
  212.             case "LessThan":   
  213.                 return (op1 < op2);   
  214.             case "LessThanEqual":   
  215.                 return (op1 <= op2);   
  216.             default:   
  217.                 return (op1 == op2);               
  218.         }   
  219.     },   
  220.     MustChecked : function(name, min, max){   
  221.         var groups = document.getElementsByName(name);   
  222.         var hasChecked = 0;   
  223.         min = min || 1;   
  224.         max = max || groups.length;   
  225.         for(var i=groups.length-1;i>=0;i--)   
  226.             if(groups[i].checked) hasChecked++;   
  227.         return min <= hasChecked && hasChecked <= max;   
  228.     },   
  229.     IsDate : function(op, formatString){   
  230.         formatString = formatString || "ymd";   
  231.         var m, year, month, day;   
  232.         switch(formatString){   
  233.             case "ymd" :   
  234.                 m = op.match(new RegExp("^((//d{4})|(//d{2}))([-./])(//d{1,2})//4(//d{1,2})$"));   
  235.                 if(m == null ) return false;   
  236.                 day = m[6];   
  237.                 month = m[5]--;   
  238.                 year =  (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10));   
  239.                 break;   
  240.             case "dmy" :   
  241.                 m = op.match(new RegExp("^(//d{1,2})([-./])(//d{1,2})//2((//d{4})|(//d{2}))$"));   
  242.                 if(m == null ) return false;   
  243.                 day = m[1];   
  244.                 month = m[3]--;   
  245.                 year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10));   
  246.                 break;   
  247.             default :   
  248.                 break;   
  249.         }   
  250.         if(!parseInt(month)) return false;   
  251.         month = month==12 ?0:month;   
  252.         var date = new Date(year, month, day);   
  253.         return (typeof(date) == "object" && year == date.getFullYear() && month == date.getMonth() && day == date.getDate());   
  254.         function GetFullYear(y){return ((y<30 ? "20" : "19") + y)|0;}   
  255.     }   
  256.  }   
  257. </script>  

 

 

 

代码:

 

 

  1. <title>表单验证类 Validator v1.01</title>   
  2.  <style>   
  3.  body,td{font:normal 12px Verdana;color:#333333}   
  4.  input,textarea,select,td{font:normal 12px Verdana;color:#333333;border:1px solid #999999;background:#ffffff}   
  5.  table{border-collapse:collapse;}   
  6.  td{padding:3px}   
  7.  input{height:20;}   
  8.  textarea{width:80%;height:50px;overfmin:auto;}   
  9.  form{display:inline}   
  10.  </style>   
  11.  <table align="center">   
  12.   <form name="theForm" id="demo" action="" method="get" onSubmit="return Validator.Validate(this,2)">   
  13.     <tr>   
  14.    <td>真实姓名:</td><td><input name="Name" dataType="Chinese" msg="真实姓名只允许中文"></td>   
  15.   </tr>   
  16.   <tr>   
  17.    <td>英文名:</td><td><input name="Nick" dataType="English" require="false" msg="英文名只允许英文字母"></td>   
  18.   </tr>   
  19.     <tr>   
  20.    <td>主页:</td><td><input name="Homepage" require="false" dataType="Url"   msg="非法的Url"></td>   
  21.   </tr>   
  22.   <tr>   
  23.    <td>密码:</td><td><input name="Password" dataType="SafeString"   msg="密码不符合安全规则" type="password"></td>   
  24.   </tr>   
  25.   <tr>   
  26.    <td>重复:</td><td><input name="Repeat" dataType="Repeat" to="Password" msg="两次输入的密码不一致" type="password"></td>   
  27.   </tr>   
  28.   <tr>   
  29.    <td>信箱:</td><td><input name="Email" dataType="Email" msg="信箱格式不正确"></td>   
  30.   </tr>   
  31.     <tr>   
  32.    <td>信箱:</td><td><input name="Email" dataType="Repeat" to="Email" msg="两次输入的信箱不一致"></td>   
  33.   </tr>   
  34.   <tr>   
  35.    <td>QQ:</td><td><input name="QQ" require="false" dataType="QQ" msg="QQ号码不存在"></td>   
  36.   </tr>   
  37.     <tr>   
  38.    <td>身份证:</td><td><input name="Card" dataType="IdCard" msg="身份证号码不正确"></td>   
  39.   </tr>   
  40.   <tr>   
  41.    <td>年龄:</td><td><input name="Year" dataType="Range" msg="年龄必须在18~28之间" min="18" max="28"></td>   
  42.   </tr>   
  43.    <tr>   
  44.    <td>年龄1:</td><td><input name="Year1" require="false" dataType="Compare" msg="年龄必须在18以上" to="18" operator="GreaterThanEqual"></td>   
  45.   </tr>   
  46.    <tr>   
  47.    <td>电话:</td><td><input name="Phone" require="false" dataType="Phone" msg="电话号码不正确"></td>   
  48.   </tr>   
  49.    <tr>   
  50.    <td>手机:</td><td><input name="Mobile" require="false" dataType="Mobile" msg="手机号码不正确"></td>   
  51.   </tr>   
  52.      <tr>   
  53.    <td>生日:</td><td><input name="Birthday" dataType="Date" format="ymd" msg="生日日期不存在"></td>   
  54.   </tr>   
  55.    <tr>   
  56.    <td>邮政编码:</td><td><input name="Zip" dataType="Custom" regexp="^[1-9]/d{5}$" msg="邮政编码不存在"></td>   
  57.   </tr>   
  58.   <tr>   
  59.    <td>邮政编码:</td><td><input name="Zip1" dataType="Zip" msg="邮政编码不存在"></td>   
  60.   </tr>   
  61.   <tr>   
  62.    <td>操作系统:</td><td><select name="Operation" dataType="Require"  msg="未选择所用操作系统" ><option value="">选择您所用的操作系统</option><option value="Win98">Win98</option><option value="Win2k">Win2k</option><option value="WinXP">WinXP</option></select></td>   
  63.   </tr>   
  64.   <tr>   
  65.    <td>所在省份:</td><td>广东<input name="Province" value="1" type="radio">陕西<input name="Province" value="2" type="radio">浙江<input name="Province" value="3" type="radio">江西<input name="Province" value="4" type="radio" dataType="Group"  msg="必须选定一个省份" ></td>   
  66.   </tr>   
  67.   <tr>   
  68.    <td>爱好:</td><td>运动<input name="Favorite" value="1" type="checkbox">上网<input name="Favorite" value="2" type="checkbox">听音乐<input name="Favorite" value="3" type="checkbox">看书<input name="Favorite" value="4" type="checkbox"" dataType="Group" min="2" max="3"  msg="必须选择2~3种爱好"></td>   
  69.   </tr>   
  70.    <td>自我介绍:</td><td><textarea name="Description" dataType="Limit" max="10"  msg="自我介绍内容必须在10个字之内">中文是一个字</textarea></td>   
  71.   </tr>   
  72.      <td>自传:</td><td><textarea name="History" dataType="LimitB" min="3" max="10"  msg="自传内容必须在[3,10]个字节之内">中文是两个字节t</textarea></td>   
  73.   </tr>   
  74.   <tr>   
  75.    <td colspan="2"><input name="Submit" type="submit" value="确定提交"><input onClick="Validator.Validate(document.getElementById('demo'))" value="检验模式1" type="button"><input onClick="Validator.Validate(document.getElementById('demo'),2)" value="检验模式2" type="button"><input onClick="Validator.Validate(document.getElementById('demo'),3)" value="检验模式3" type="button"></td>   
  76.   </tr>   
  77.   </form>   
  78.  </table>   
  79.  <script>   
  80.  /*************************************************  
  81.     Validator v1.01  
  82.     code by 我佛山人  
  83.     wfsr@cunite.com  
  84.     http://www.cunite.com  
  85. *************************************************/  
  86.  Validator = {   
  87.     Require : /.+/,   
  88.     Email : /^/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*$/,   
  89.     Phone : /^((/(/d{3}/))|(/d{3}/-))?(/(0/d{2,3}/)|0/d{2,3}-)?[1-9]/d{6,7}$/,   
  90.     Mobile : /^((/(/d{3}/))|(/d{3}/-))?13/d{9}$/,   
  91.     Url : /^http:////[A-Za-z0-9]+/.[A-Za-z0-9]+[//=/?%/-&_~`@[/]/':+!]*([^<>/"/"])*$/,   
  92.     IdCard : /^/d{15}(/d{2}[A-Za-z0-9])?$/,   
  93.     Currency : /^/d+(/./d+)?$/,   
  94.     Number : /^/d+$/,   
  95.     Zip : /^[1-9]/d{5}$/,   
  96.     QQ : /^[1-9]/d{4,8}$/,   
  97.     Integer : /^[-/+]?/d+$/,   
  98.     Double : /^[-/+]?/d+(/./d+)?$/,   
  99.     English : /^[A-Za-z]+$/,   
  100.     Chinese :  /^[/u0391-/uFFE5]+$/,   
  101.     UnSafe : /^(([A-Z]*|[a-z]*|/d*|[-_/~!@#/$%/^&/*/./(/)/[/]/{/}<>/?/////'/"]*)|.{0,5})$|/s/,   
  102.     IsSafe : function(str){return !this.UnSafe.test(str);},   
  103.     SafeString : "this.IsSafe(value)",   
  104.     Limit : "this.limit(value.length,getAttribute('min'),  getAttribute('max'))",   
  105.     LimitB : "this.limit(this.LenB(value), getAttribute('min'), getAttribute('max'))",   
  106.     Date : "this.IsDate(value, getAttribute('min'), getAttribute('format'))",   
  107.     Repeat : "value == document.getElementsByName(getAttribute('to'))[0].value",   
  108.     Range : "getAttribute('min') < value && value < getAttribute('max')",   
  109.     Compare : "this.compare(value,getAttribute('operator'),getAttribute('to'))",   
  110.     Custom : "this.Exec(value, getAttribute('regexp'))",   
  111.     Group : "this.MustChecked(getAttribute('name'), getAttribute('min'), getAttribute('max'))",   
  112.     ErrorItem : [document.forms[0]],   
  113.     ErrorMessage : ["以下原因导致提交失败:/t/t/t/t"],   
  114.     Validate : function(theForm, mode){   
  115.         var obj = theForm || event.srcElement;   
  116.         var count = obj.elements.length;   
  117.         this.ErrorMessage.length = 1;   
  118.         this.ErrorItem.length = 1;   
  119.         this.ErrorItem[0] = obj;   
  120.         for(var i=0;i<count;i++){   
  121.             with(obj.elements[i]){   
  122.                 var _dataType = getAttribute("dataType");   
  123.                 if(typeof(_dataType) == "object" || typeof(this[_dataType]) == "undefined")  continue;   
  124.                 this.ClearState(obj.elements[i]);   
  125.                 if(getAttribute("require") == "false" && value == ""continue;   
  126.                 switch(_dataType){   
  127.                     case "Date" :   
  128.                     case "Repeat" :   
  129.                     case "Range" :   
  130.                     case "Compare" :   
  131.                     case "Custom" :   
  132.                     case "Group" :    
  133.                     case "Limit" :   
  134.                     case "LimitB" :   
  135.                     case "SafeString" :   
  136.                         if(!eval(this[_dataType]))  {   
  137.                             this.AddError(i, getAttribute("msg"));   
  138.                         }   
  139.                         break;   
  140.                     default :   
  141.                         if(!this[_dataType].test(value)){   
  142.                             this.AddError(i, getAttribute("msg"));   
  143.                         }   
  144.                         break;   
  145.                 }   
  146.             }   
  147.         }   
  148.         if(this.ErrorMessage.length > 1){   
  149.             mode = mode || 1;   
  150.             var errCount = this.ErrorItem.length;   
  151.             switch(mode){   
  152.             case 2 :   
  153.                 for(var i=1;i<errCount;i++)   
  154.                     this.ErrorItem[i].style.color = "red";   
  155.             case 1 :   
  156.                 alert(this.ErrorMessage.join("/n"));   
  157.                 this.ErrorItem[1].focus();   
  158.                 break;   
  159.             case 3 :   
  160.                 for(var i=1;i<errCount;i++){   
  161.                 try{   
  162.                     var span = document.createElement("SPAN");   
  163.                     span.id = "__ErrorMessagePanel";   
  164.                     span.style.color = "red";   
  165.                     this.ErrorItem[i].parentNode.appendChild(span);   
  166.                     span.innerHTML = this.ErrorMessage[i].replace(//d+:/,"*");   
  167.                     }   
  168.                     catch(e){alert(e.description);}   
  169.                 }   
  170.                 this.ErrorItem[1].focus();   
  171.                 break;   
  172.             default :   
  173.                 alert(this.ErrorMessage.join("/n"));   
  174.                 break;   
  175.             }   
  176.             return false;   
  177.         }   
  178.         return true;   
  179.     },   
  180.     limit : function(len,min, max){   
  181.         min = min || 0;   
  182.         max = max || Number.MAX_VALUE;   
  183.         return min <= len && len <= max;   
  184.     },   
  185.     LenB : function(str){   
  186.         return str.replace(/[^/x00-/xff]/g,"**").length;   
  187.     },   
  188.     ClearState : function(elem){   
  189.         with(elem){   
  190.             if(style.color == "red")   
  191.                 style.color = "";   
  192.             var lastNode = parentNode.childNodes[parentNode.childNodes.length-1];   
  193.             if(lastNode.id == "__ErrorMessagePanel")   
  194.                 parentNode.removeChild(lastNode);   
  195.         }   
  196.     },   
  197.     AddError : function(index, str){   
  198.         this.ErrorItem[this.ErrorItem.length] = this.ErrorItem[0].elements[index];   
  199.         this.ErrorMessage[this.ErrorMessage.length] = this.ErrorMessage.length + ":" + str;   
  200.     },   
  201.     Exec : function(op, reg){   
  202.         return new RegExp(reg,"g").test(op);   
  203.     },   
  204.     compare : function(op1,operator,op2){   
  205.         switch (operator) {   
  206.             case "NotEqual":   
  207.                 return (op1 != op2);   
  208.             case "GreaterThan":   
  209.                 return (op1 > op2);   
  210.             case "GreaterThanEqual":   
  211.                 return (op1 >= op2);   
  212.             case "LessThan":   
  213.                 return (op1 < op2);   
  214.             case "LessThanEqual":   
  215.                 return (op1 <= op2);   
  216.             default:   
  217.                 return (op1 == op2);               
  218.         }   
  219.     },   
  220.     MustChecked : function(name, min, max){   
  221.         var groups = document.getElementsByName(name);   
  222.         var hasChecked = 0;   
  223.         min = min || 1;   
  224.         max = max || groups.length;   
  225.         for(var i=groups.length-1;i>=0;i--)   
  226.             if(groups[i].checked) hasChecked++;   
  227.         return min <= hasChecked && hasChecked <= max;   
  228.     },   
  229.     IsDate : function(op, formatString){   
  230.         formatString = formatString || "ymd";   
  231.         var m, year, month, day;   
  232.         switch(formatString){   
  233.             case "ymd" :   
  234.                 m = op.match(new RegExp("^((//d{4})|(//d{2}))([-./])(//d{1,2})//4(//d{1,2})$"));   
  235.                 if(m == null ) return false;   
  236.                 day = m[6];   
  237.                 month = m[5]--;   
  238.                 year =  (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10));   
  239.                 break;   
  240.             case "dmy" :   
  241.                 m = op.match(new RegExp("^(//d{1,2})([-./])(//d{1,2})//2((//d{4})|(//d{2}))$"));   
  242.                 if(m == null ) return false;   
  243.                 day = m[1];   
  244.                 month = m[3]--;   
  245.                 year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10));   
  246.                 break;   
  247.             default :   
  248.                 break;   
  249.         }   
  250.         if(!parseInt(month)) return false;   
  251.         month = month==12 ?0:month;   
  252.         var date = new Date(year, month, day);   
  253.         return (typeof(date) == "object" && year == date.getFullYear() && month == date.getMonth() && day == date.getDate());   
  254.         function GetFullYear(y){return ((y<30 ? "20" : "19") + y)|0;}   
  255.     }   
  256.  }   
  257. </script> 

 

抱歉!评论已关闭.