• 使用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. }
  • 相关阅读:
    SQL Server 2005 学习笔记之触发器简介[转]
    什么是BCD 码
    关于C# 中的Attribute 特性
    也谈Asp.net 中的身份验证
    SQL Server 2005 创建分区表
    使用SerialPort 对象实现串口拨号器通信[下]
    子角色权限的实现
    SQL Server 中,实现 varbinary 与 varchar 类型之间的数据转换
    TSQL 常用排名函数
    关于ASP.NET 将数据导出成Excel 的总结[中]
  • 原文地址:https://www.cnblogs.com/xiaochao12345/p/3912454.html
Copyright © 2020-2023  润新知