使用JAVASCRIPT进行数据完整性验证

页面输入完整性是编写BS经常遇到的问题,如果那里需要就到那里写,那可是要花不少的时候,并且造成不必要的浪费,下面是一个通过校验脚本,使用非常方便,通过传入FORM名就可以进行校验,通过在页面控件中增加用户本身自定义属性,进行方便的验证,包括数字的输入、密码的输入、EMAIL的输入,用户本身可以进行无限的扩展,使用如下,在页面中加入如下代码:

  1. <form name="form1">
  2.     <input type="text" name="t1" req="0" size="20"><br>
  3.     <input type="text" name="t2" req="0" size="20"><br>
  4.     <input type="text" name="t3" req="0" size="20"><br>
  5.     <input type="text" name="t4" req="1" size="20"><br>
  6.     <input type="text" name="t5" req="1" customtype="email" displayname="电子邮件" size="20"><br>
  7.     <input type="button" name="bt" value="check" onclick="checkForm(document.form1)">
  8. </form>

并在页头加以包含以下代码的JS脚本:

  1. var customtypes = new Array("num","plus","int","email","link","password","name","date","money","date8");
  2. var custommessage = new Array(
  3.     "不是一个有效的数字。",
  4.     "不是一个有效的正整数。",
  5.     "不是一个有效的整数。",
  6.     "不是一个有效的电子邮件地址。",
  7.     "不是一个有效的链接,请确认输入了完整的地址,例如http://www.cnlist.com。",
  8.     "不是一个有效的密码,密码只能使用字母、下划线与数字,不能包含符号与空格。",
  9.     "不是一个有效的名称,名称只能使用字母、下划线与数字,不能包含符号与空格。",
  10.     "不是一个有效的日期。",
  11.     "不是一个有效的money格式。",
  12.     "不是一个有效的8位日期,如:20050801。"
  13. );
  14. function checkForm(oForm){
  15.   window.event.returnValue = false;
  16.   for (var i=0;i<oForm.all.tags("input").length;i++){
  17.     var ele = oForm.all.tags("input")[i];
  18.     var ct = ele.getAttribute("customtype");
  19.     var req = ele.getAttribute("req");
  20.     var dn = ele.getAttribute("displayname");
  21.     if (null == dn){
  22.       dn = ele.name;
  23.     }
  24.     dn = "“" + dn + "”";
  25.     
  26.     if(ele.value!=null){
  27.         ele.value = ele.value.replace(/%/g, "%");
  28.     }
  29.     var nr = new String(ele.value);
  30.     if ("1" == req){
  31.       if (nr.length < 1){
  32.         alert(dn + "不可以省略,请重新输入。");
  33.         //ele.focus();
  34.         focusIt(ele);
  35.         return false;
  36.       }
  37.     }
  38.     if((''==req || '0' ==req || null==req) && (ele.value == "")) continue;//不必要且没有输入时,下一个
  39.     
  40.     if ((("" == req)||(null == ct)) &&(ele.value == "")) continue;
  41.     //检查自定义类型
  42.     //纠正自定义类型在req不等于1时仍要求输入的bug
  43.     if (("1" == req) || (nr.length > 0)) {
  44.     for (var j=0;j<customtypes.length;j++){
  45.       if (ct == customtypes[j]){
  46.           if(ct=="money"){
  47.               eval("var rtn = check_" + customtypes[j] + "(ele);");
  48.           }else{
  49.               eval("var rtn = check_" + customtypes[j] + "(ele.value);");
  50.           }
  51.         
  52.         if (!rtn){
  53.           alert(dn + custommessage[j]);
  54.           //ele.focus();
  55.           focusIt(ele);
  56.           return false;
  57.         }
  58.       }
  59.     }
  60.   }
  61.   }
  62.   window.event.returnValue = true;
  63.   return true;
  64. }
  65. function check_money(s) {
  66.     s.value=s.value.replace(/,/g, "")
  67.     var re = /^(/+|-)?/d+(./d+)?$/i;
  68.     return re.test(s.value);
  69. }
  70. function check_email(s){
  71.   var re = /^/w+@(/w)+((.(/w)+)+)?$/i;
  72.   return re.test(s);
  73. }
  74. function check_num(s){
  75.   var re = /^(/+|-)?/d+(./d+)?$/i;
  76.   return re.test(s);
  77. }
  78. function check_int(s){
  79.   var re = /^(/+|-)?/d+$/i;
  80.   return re.test(s);
  81. }
  82. function check_plus(s) {
  83.   var re = /^[1-9]/d*$/i
  84.   return re.test(s);
  85. }
  86. function check_link(s){
  87.   var re = /^(http|mailto|ftp|https|telnet)://{2}/i;
  88.   return re.test(s);
  89. }
  90. function check_password(s){
  91.   var re = /^/w+$/i;
  92.   return re.test(s);
  93. }
  94. function check_name(s){
  95.   return check_password(s);
  96. }
  97. function check_date8(DateString){
  98.    return isDateEight(DateString);
  99. }
  100. //日期检测
  101. function check_date(DateString){
  102.   if (DateString==null) return false;
  103.   if (Dilimeter=='' || Dilimeter==null)
  104.   var Dilimeter = '-';
  105.     if (Dilimeter.indexOf("/")>0)
  106.   {
  107.         Dilimeter="/";
  108.     }
  109.   var tempy='';
  110.   var tempm='';
  111.   var tempd='';
  112.     var tempH="";
  113.     var tempM="";
  114.     var tempS="";
  115.     var tempymd="";
  116.     var temphms="";
  117.   var tempArray;
  118.   if (DateString.length<8 && DateString.length>19) {
  119.       return false;
  120.     }
  121.     if (DateString.indexOf(" ")>0)
  122.     {
  123.         temp=DateString.split(" ");
  124.         tempymd=temp[0];
  125.         temphms=temp[1];
  126.     }
  127.     else
  128.     {
  129.         tempymd=DateString;
  130.         temphms="00:00:00";
  131.     }
  132.   tempArray = tempymd.split(Dilimeter);
  133.   if (tempArray.length!=3) {
  134.       return false;
  135.     }
  136.   if (tempArray[0].length==4)
  137.   {
  138.     tempy = tempArray[0];
  139.     tempd = tempArray[2];
  140.         tempm = tempArray[1];
  141.   }
  142.   else
  143.   {
  144.     tempy = tempArray[2];
  145.     tempd = tempArray[1];
  146.         tempm = tempArray[0];
  147.   }
  148.     tempArray = temphms.split(":");
  149.     if (tempArray.length>3  || tempArray.length<2) {
  150.         return false;
  151.     }
  152.     switch (tempArray.length) {
  153.         case 2:
  154.             tempH=tempArray[0];
  155.             tempM=tempArray[1];
  156.             tempS="00";
  157.             break;
  158.         case 3:
  159.             tempH=tempArray[0];
  160.             tempM=tempArray[1];
  161.             tempS=tempArray[2];
  162.             break;
  163.     }
  164.     var tDateString = tempy + '/'+tempm + '/'+tempd+' '+tempH+":"+tempM+":"+tempS;
  165.     var tempDate = new Date(tDateString);
  166.     if (isNaN(tempDate)) {
  167.         return false;
  168.     }
  169.   if ((tempDate.getYear().toString()==tempy || tempDate.getYear()==parseInt(tempy,10)-1900) 
  170.     && (tempDate.getMonth()==parseInt(tempm,10)-1) 
  171.     && (tempDate.getDate()==parseInt(tempd,10)) 
  172.     && (tempDate.getHours().toString()==parseInt(tempH,10)) 
  173.     && (tempDate.getMinutes().toString()==parseInt(tempM,10)) 
  174.     && (tempDate.getSeconds().toString()==parseInt(tempS,10)))
  175.   {
  176.     return true;
  177.   }
  178.   else
  179.   {
  180.         alert('tDateString='+tDateString);
  181.     return false;
  182.   }
  183. }
  184. //激活输入组件的焦点
  185. function focusIt(obj){
  186.   try{
  187.     var ele = mtb;
  188.   }catch(e){
  189.         try{
  190.                 obj.focus();
  191.             return;
  192.             }catch(e){
  193.             return;
  194.             }
  195.   }
  196.   for (var i=0;i<ele.length;i++){
  197.     swH(i);
  198.         try{
  199.         obj.focus();
  200.         }catch(e){
  201.         continue;
  202.         }
  203.         break;
  204.   }
  205.   try{
  206.     obj.focus();
  207.   }catch(e){
  208.     return false;
  209.   }return true;
  210. }
原文地址:https://www.cnblogs.com/xiaochao12345/p/3912454.html