web表单页面自动校验

和web页面打交道,免不了大量的表单校验,用IE支持自定义属性,可以实现表单页面自动校验,提高我们的开发效率

自定义的classe属性为required 为表单必填项,datatype属性为number 和date对数字和日期校验

alt属性为警告提示说明,datamodel为数值校验的大小及位数"####.##"

例如:

ValidateNull(form);
<input type="text" maxlength="10" size="10" name="csrq" alt="出生日期" classe="required" />
<input type="text" maxlength="10" size="10" name="csrq" alt="出生日期" classe="required" datatype ="date">
<input type="text" maxlength="30" size="30" name="yb" alt="邮编" class="required" datatype ="number" datamodel="####.##"/>
同样对选择项,单选项有效
 
function ValidateNull(form){
//日期和数字用的比较多
  var prop;
  
var bdate="date";
  
var bnumber="number";
  
var bnumbermodel="numbermodel";
  
for(var i=0;i< form.elements.length;i++){
      prop 
= form.elements[i];
    
if(prop.name!=""){
      
if(prop["className"]=="required"){
        
if(isEmpty(prop["value"])){
         
    alert("""+prop["alt"]+"""+"不可为空!");
       
     prop.focus();
        
return false;
      }
//单选项校验
      
if(prop["type"].toLowerCase()=="checkbox" && prop["checked"]==false){
        alert(
"""+prop["alt"]+"""+"不可为空!");
        
return false;
      }

   }

   
if(!isEmpty(prop["value"])){
       
//整数校验
       if(prop.datatype==bnumber){
           
if(!isEmpty(prop["value"])){
               
if(!isNumberPatten(prop["value"],prop.datamodel)){
                   alert(
"""+prop["alt"]+"""+"格式必须为"+prop.datamodel+"!");
                  prop.focus();             
                  
return false;
            }
               
           }
          
      }

       
//日期校验
      if(prop.datatype==bdate){
           
if(!isEmpty(prop["value"])){
              
if(!isDate(prop["value"])){                   
                  alert(
"""+prop["alt"]+"""+'格式必须为"YYYY-MM-DD",如2008-01-01!');
                  prop.focus();             
                  
return false;
            }
               
           }
          
      }
  
    }
    
   }

  }

  
return ValidateLength(form);
}

function ValidateLength(form){
 
var prop;
 
var comment = null;
 
var maxlength = null;
  
for(var i=0;i< form.elements.length;i++){
    prop 
= form.elements[i];
    
if(prop.type=="text"){
      
if(prop.alt==null || prop.alt.length!=0){
    comment 
= prop.alt;
      }

      
if(prop.title==null || prop.title.length!=0){
    comment 
= prop.title;
      }

      
if(comment==null){
    comment
='';
      }

      
/*if(typeof prop.maxlength == "undefined"){*/
    maxlength 
= prop.maxLength;
      
/*}else{
    maxlength = prop.maxlength;
      }
*/


      
if(maxlength!=null){
     
if(getByteLength(prop.value)>maxlength){
      
if(comment.length==0){
        alert(
"未知名字段长度不能大于"+maxlength + "位(中文字算2位)");
        prop.focus();
        prop.select();
        
return false;
      }
else{
        alert(
'"'+comment+'"长度不能大于'+maxlength + "位(中文字算2位)");
        prop.focus();
        prop.select();
        
return false;
      }

    }

      }

    }

  }

  
return true;
}

function isEmpty(sString){
    
var s = allTrim(sString);
    
if (s.length < 1)
        
return true;
    
else
        
return false;
}

function lTrim(sString)
{
    
var i;
    
if (sString.length < 1)
        
return "";
    
for (i = 0; i < sString.length; i++)
        
if (sString.charAt(i) != " ")
            
break;
    
if (i >= sString.length)
        
return("");
    
else
        
return(sString.substring(i, sString.length));
}

function rTrim(sString)
{
    
var i;
    
if (sString.length < 1)
        
return "";
    
for (i = (sString.length - 1); i >= 0; i--)
        
if (sString.charAt(i) != " ")
            
break;
    
if (i < 0)
        
return("");
    
else
        
return(sString.substring(0, i + 1));
}

function allTrim(sString)
{
    
if (sString.length < 1)
        
return "";
    
var dString = lTrim(sString);
    dString 
= rTrim(dString);
    
return dString;
}

function isNumberPatten(src,sPatten){
  
var arr;
  arr 
= sPatten.split(".");
  
if(arr.length==1){
      
return isNumber(src,arr[0].length,0);
  }
else{
      
return isNumber(src,arr[0].length+arr[1].length,arr[1].length);
  }


}
function isNumber(src,precision,scale){
  
var integer_part = precision - scale;

  
if (integer_part < 0 || precision < 0 || scale < 0)
          
return false;

  
var patten;

  
if (scale > 0{
    patten 
= "^-?/d{1," + integer_part + "}(/./d{1," + scale + "})?$";
  }

  
else {
    patten 
= "^-?/d{1," + integer_part + "}$";
  }


  
return Matchs(src, patten);
}


function Matchs(src,patten){
  
var re;                     // 声明变量。
  re = new RegExp(patten,"g");  // 创建正则表达式对象。
  return re.test(src);
}

//日期格式:YYYY-MM-DD
function isDate(strDate){
   
var strSeparator = "-"//日期分隔符
   var strDateArray;
   
var intYear;
   
var intMonth;
   
var intDay;
   
var boolLeapYear;

   strDateArray 
= strDate.split(strSeparator);
   
if(strDateArray.length!=3return false;

   
// 月日的长度必须是2
   if(strDateArray[1].length!=2return false;
   
if(strDateArray[2].length!=2return false;

   intYear 
= parseInt(strDateArray[0],10);
   intMonth 
= parseInt(strDateArray[1],10);
   intDay 
= parseInt(strDateArray[2],10);

   
if(isNaN(intYear)||isNaN(intMonth)||isNaN(intDay)) return false;

   
if(intMonth>12||intMonth<1return false;

   
if((intMonth==1||intMonth==3||intMonth==5||intMonth==7||intMonth==8||intMonth==10||intMonth==12)&&(intDay>31||intDay<1)) return false;

   
if((intMonth==4||intMonth==6||intMonth==9||intMonth==11)&&(intDay>30||intDay<1)) return false;

   
if(intMonth==2){
      
if(intDay<1return false;

      boolLeapYear 
= false;
      
if((intYear%100)==0){
     
if((intYear%400)==0) boolLeapYear = true;
      }

      
else{
     
if((intYear%4)==0) boolLeapYear = true;
      }


      
if(boolLeapYear){
     
if(intDay>29return false;
      }

      
else{
     
if(intDay>28return false;
      }

   }

   
return true;
}

  表单的验证一直是网页设计者头痛的问题,表单验证类 Validator就是为解决这个问题而写的,旨在使设计者从纷繁复杂的表单验证中解放出来,把精力集中于网页的设计和功能上的改进上。 <br><br>  Validator是基于JavaScript技术的伪静态类和对象的自定义属性,可以对网页中的表单入进行相应的验证,允许同一页面中同时验证多个表单,熟悉接口之后也可以对特定的表单项甚至仅仅是某个字符串进行验证。因为是伪静态类,所以在调用时不需要实例化,直接以"类名+.语法+属性或方法名"来调用。此外,Validator还提供3种不同的错误提示模式,以满足不同的需要。<br><br>  完整文档下载: Validator.chm (zip压缩,111K)<br><br>  Validator目前可实现的验证类型有:<br><br>  1.是否为空;<br>  2.中文字符;<br>  3.双字节字符<br>  4.英文;<br>  5.数字;<br>  6.整数;<br>  7.实数;<br>  8.Email地址;<br>  9.使用HTTP协议的网址;<br>  10.电话号码;<br>  11.货币;<br>  12.手机号码;<br>  13.邮政编码;<br>  14.身份证号码;<br>  15.QQ号码;<br>  16.日期;<br>  17.符合安全规则的密码;<br>  18.某项的重复;<br>  19.两数的关系比较;<br>  20.判断是否在(n, m)区间;<br>  21.入字符长度限制(可按字节比较);<br>  22.对于具有相同名称的单选按钮的选中判断;<br>  23.限制具有相同名称的多选按钮的选中数目;<br>  24.自定义的正则表达式验证; <br><br>  运行环境(客户端): <br><br>  在Windows Server 2003下用IE6.0+SP1和Mozilla Firefox 1.0测试通过;<br>  在Lunix RedHat 9下的Netscape测试通过;<br>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值