java工程积累——前台页面的统一校验

对比:

1,以前的页面验证代码

  <span style="font-size:18px;">//为了验证就医单号是否为空  
        var isDBNull = 'true'  
        //判断就医单号是否为空,为空:true,否则false;  
        function isInoputNull(){  
            for(var i = 0;i < detailSourceList.length; i++){  
                  
                var dateStr = $('#txtOriginalCode' + i)[0].value;  
                  
                if(dateStr.trim()==''){  
                    isDBNull='false';  
                }  
                      
             }  
    }</span> 

 

这样我们每个需要验证的页面都要在提交时走一遍这个函数,我们如果验证多了,就会在提交表单是写N个类似的函数 ,这样,实际浪费的是我们的时间!

 

2,改进之后

    <span style="font-size:18px;">

<input type="text" vtype="NumAndStr" notNull="true" vdisp="提示信息" id="isOldLeader"   value="${LoginUser.NLeader}"/>

    </span> 

在提交表单是,我们只需要调用一个统一的验证入口(doValidate)就可以了

验证js文件:validateform.js

 

  1 /**
  2 表单验证类, 可以根据需要,参考下面的代码自行扩充
  3 author: guoerhua@126.com
  4 使用方法:在标签中可以添加以下属性
  5 vtype:   输入域的类型,取值为[LetterStr, NumAndStr, NumStr, ...], 可参考validrule
  6 notNull: 是否为空,取值为[true, false]
  7 vdisp:   表示提示信息
  8 */
  9 var validrule                  = new Object();
 10 validrule.LetterStr            = /^([a-zA-Z]+)?$/;     
 11 validrule.NumAndStr            = /^([0-9a-zA-Z]+)?$/;
 12 validrule.NumStr               = /^(\d*)?$/;  
 13 validrule.string               = /^([^'<>]+)?$/;
 14 validrule.int                  = /^(\d{1,9})?$/; 
 15 validrule.minusint             = /^(\-([1-9])(\d*))?$/;
 16 validrule.float                = /^((\.([0-9]\d*))|(([0-9]\d*)\.\d+$)|([0-9]\d*))?$/;                    
 17 validrule.date                 = /^((([1-9]\d{3})|([1-9]\d{1}))-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1]))?$/;  
 18 validrule.time                 = /^((0[1-9]|1[0-9]|2[0-4]):([0-5][0-9]):([0-5][0-9]))?$/; 
 19 validrule.datetime             = /^((([1-9]\d{3})|([1-9]\d{1}))-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1]) (0[1-9]|1[0-9]|2[0-4]):([0-5][0-9]):([0-5][0-9]))?$/;   
 20 validrule.year                 = /^(\d{4})?$/; 
 21 validrule.month                = /^([1-9]|0[1-9]|1[0-2])?$/;
 22 validrule.day                  = /^([1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])?$/;
 23 validrule.postcode             = /^(\d{6})?$/;           
 24 validrule.email                = /^(.+\@.+\..+)?$/;   
 25 validrule.phone                = /^(\(\d{3}\))?(\(?(\d{3}|\d{4}|\d{5})\)?(-?)(\d+))?((-?)(\d+))?$/; 
 26 validrule.mobiletel            = /^(013(\d{9})|13(\d{9}))?$/; 
 27 validrule.ip                   = /^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5]))?$/;  
 28 validrule.idcard               = /^(\d{15}|\d{18}|\d{17}X|\d{17}x)?$/; 
 29 validrule.tabledefine          = /^(([A-Za-z])([A-Za-z0-9|_]){1,18})?$/; 
 30 validrule.integer              = /^(\d{1,9})?$/; 
 31 validrule.number               = /^(\d*)?$/;
 32 validrule.url                  = /^(http:\/\/)/;
 33 validrule.chinese              = /^[\u4E00-\u9FA5]*$/;
 34 validrule.notsstring           = /^([^'<>\s]+)?$/;
 35 validrule.noEmpty              = /^\s*$/;
 36 
 37 function doValidate( vform ) 
 38 {
 39     var elems = vform.elements;
 40     var frmLen = elems.length;
 41     var thePat = "";
 42     var strFormatInfo = "";
 43     //对于每一个FROM元素
 44     for(var i=0;i<frmLen;i++) 
 45     {
 46         var _elem = elems[i];
 47         if(!_elem)
 48             continue;
 49         
 50         //为空检查                
 51         if(_elem.notNull != null && _elem.notNull == "true") 
 52         {
 53             if(validrule.noEmpty.test(_elem.value)) 
 54             {
 55                 alert("请填写"+_elem.vdisp+"!");
 56                 _elem.focus();
 57                 return false;
 58             }
 59         }
 60         
 61         if(_elem.tagName=="TEXTAREA"){
 62             if(!validateTextareaMaxlength(_elem)){
 63                 return false;
 64             }
 65         }
 66         
 67         //类型检查                  
 68         if(_elem.vtype == null) 
 69         {
 70             continue;
 71         }
 72               if(_elem.vtype=="none")
 73               {         
 74                  thePat = "";
 75                  strFormatInfo = "";
 76               }
 77               if(_elem.vtype=="LetterStr")
 78               {       
 79                  thePat = validrule.LetterStr;
 80                  strFormatInfo = "纯字母字符串";
 81               }
 82               if(_elem.vtype=="NumAndStr")
 83               {       
 84                  thePat = validrule.NumAndStr;
 85                  strFormatInfo = "数字和字母字符串";
 86               }
 87               if(_elem.vtype=="NumStr")
 88               {       
 89                  thePat = validrule.NumStr;
 90                  strFormatInfo = "纯数字组成的字符串";
 91               }
 92               if(_elem.vtype=="string")
 93               {       
 94                  thePat = validrule.string;
 95                  strFormatInfo = "不能包含特殊符的字符串(英文的'<>)";
 96               }
 97               if(_elem.vtype=="int")         
 98               {       
 99                  thePat = validrule.int;
100                  strFormatInfo = "整数";
101               }
102               if(_elem.vtype=="minusint")         
103               {       
104                  thePat = validrule.minusint;
105                  strFormatInfo = "负整数,比如-123";
106               }
107               if(_elem.vtype=="float")         
108               {       
109                  thePat = validrule.float;
110                  strFormatInfo = "实数,比如356.32";
111               }
112               if(_elem.vtype=="date")         
113                 {       
114                  thePat = validrule.date;
115                  strFormatInfo = "日期型,比如 2004-08-12";
116               }
117               if(_elem.vtype=="time")         
118               {       
119                  thePat = validrule.time;
120                  strFormatInfo = "时间型,比如08:37:29";
121               }               
122               if(_elem.vtype=="datetime")         
123               {       
124                  thePat = validrule.datetime;
125                  strFormatInfo = "日期时间型,比如2004-08-12 08:37:29";
126               }
127                 if(_elem.vtype=="year")         
128               {       
129                  thePat = validrule.year;
130                  strFormatInfo = "年代格式,比如 2005";
131               }
132               if(_elem.vtype=="month")         
133               {       
134                  thePat = validrule.month;
135                  strFormatInfo = "月份格式,比如 08";
136               }
137                 if(_elem.vtype=="day")         
138               {       
139                  thePat = validrule.day;
140                  strFormatInfo = "日子格式,比如 14";
141               } 
142               if(_elem.vtype=="postcode")         
143               {       
144                  thePat = validrule.postcode;
145                  strFormatInfo = "邮编,比如 100001";
146               }              
147               if(_elem.vtype=="email")         
148               {       
149                  thePat = validrule.email;
150                  strFormatInfo = "电子邮件格式,比如 msm@hotmail.com";
151               }
152               if(_elem.vtype=="phone")         
153               {       
154                  thePat = validrule.phone;
155                  strFormatInfo = "电话号码格式,比如010-67891234";
156               }
157               if(_elem.vtype=="mobiletel")         
158               {       
159                  thePat = validrule.mobiletel;
160                  strFormatInfo = "手机号码格式,比如13867891234";
161               }              
162               if(_elem.vtype=="ip")       
163               {       
164                  thePat = validrule.ip;
165                  strFormatInfo = "机器ip地址格式,比如 172.22.169.11";
166               }
167               if(_elem.vtype=="url")       
168               {       
169                  thePat = validrule.url;
170                  strFormatInfo = "url地址格式,比如 http://www.baidu.cn";
171               }
172               if(_elem.vtype=="idcard")       
173               {       
174                  thePat = validrule.idcard;
175                  strFormatInfo = "身份证号码,比如15位或者18位数字";
176               }
177               if(_elem.vtype=="tabledefine")   
178               {       
179                  thePat = validrule.tabledefine;
180                  strFormatInfo = "p_tablename";
181               }
182               if(_elem.vtype=="integer")         
183               {       
184                  thePat = validrule.integer;
185                  strFormatInfo = "整数";
186               }
187               if(_elem.vtype=="number")         
188               {       
189                  thePat = validrule.number;
190                  strFormatInfo = "数字字符";
191               }
192               if(_elem.vtype=="chinese")
193               {
194                  thePat = validrule.chinese;
195                  strFormatInfo = "汉字";
196               }
197               if(_elem.vtype == "notsstring")
198               {
199                  thePat = validrule.notsstring;
200                  strFormatInfo = "不包含空格和特殊字符的字符串(英文的'<>)";
201               }
202                             
203               var gotIt = null; 
204               if(thePat!="")
205               {
206                     gotIt = thePat.exec(_elem.value);
207               }               
208               if(gotIt == null) 
209               {
210                   alert(_elem.vdisp+"输入不合法,格式应为:"+strFormatInfo);
211                   _elem.focus();
212                   return false;
213               }
214     }  
215     return true;
216 }
217 
218 function validateTextareaMaxlength(_elem){
219     var strLen = stringLength(_elem.value);
220     if(_elem.maxlength != null  &&  strLen > _elem.maxlength) 
221     {
222         var vdisp = _elem.vdisp || "";
223         alert(vdisp + "超过限定长度,请检查! \r\n\r\n" + vdisp + "限定长度为" + _elem.maxlength + ", 实际长度为" + strLen + ". \r\n(中文字符长度为2)");
224         _elem.focus();
225         return false;
226     }
227     return true;
228 }
229 
230 function stringLength(str){
231     if(str==null) return 0;
232     var n = 0;
233     for(var i=0; i<str.length; i++){
234         if(str.charCodeAt(i)>255)
235             n = n + 2;
236         else n++;
237     }
238     return n;
239 }
View Code

 

posted @ 2014-12-02 17:56  宅山仔  阅读(526)  评论(0编辑  收藏  举报