Web开发页面验证脚本实现

      很久以前就拜读并使用过“我佛山人”兄弟的页面验证脚本(Validator v1.05),感觉功能强大的同时也感觉到有很多不够完善和人性的地方,此次由于系统开发的需要,因而对该脚本进行了较大规模的修改,主要实现了如下几个功能:

      1、可对同一控件进行复合式验证:

页面:min="8" max="8" datatype="Require,LimitB"  msg="“提货单号”不允许为空!,“提货单号”长度输入错误,应等于8个字符!"

var _dataType = getAttribute("datatype");
    if(_dataType ==null )  continue;
    this.ClearState(obj.all[i]);
    if(getAttribute("require") == "false" && value == "") continue;
    var datatype = obj2str(_dataType).split(",");
    for(var j=0;j<datatype.length;j++){
     
     var _type = datatype[j];
     if(typeof(_type) == "object" || typeof(this[_type]) == "undefined")  continue;
     switch(datatype[j]){..........................

    

     2、修正重复提交后不能进行验证的问题:

对于一个页面未做处理进行连续提交时,原JS脚本对第二次提交的页面不进行验证,经过分析发现在进行第一次提交后,datatype变成了Object类型,因此再第二次提交时无法获取验证类型。

    通过以下方法将对象转化为字符串

 

function obj2str(o){
   var r = [];
   if(typeof o == "string" || o == null) {
     return o;
   }
   if(typeof o == "object"){
       for(var i =0;i<o.length;i++){
         r[r.length]=obj2str(o[i]);
         r[r.length]=",";
       }
     var str = r.join("");
     return str.substring(0,str.lastIndexOf(','));
   }
   return o.toString();
}

 

    3、设置错误控件背景颜色,同时增加onchange事件,可以与页面中已经定义的onchange事件兼容。

 

for(var i=1;i<errCount;i++){
     this.ErrorItem[i].style.background = "#F5A89A";
     if(this.ErrorItem[i].onchange!=null){
      if(obj2str(this.ErrorItem[i].onchange).indexOf("this.style.background =/"/"")==-1){
       var change = obj2str(this.ErrorItem[i].onchange);
       this.ErrorItem[i].setAttribute("event",change.substring(change.indexOf('{')+1,change.lastIndexOf('}')));
       this.ErrorItem[i].οnchange=this["OnChange"];
      }
     }
     else{
      this.ErrorItem[i].οnchange=this["OnChange"];
     }
}

 

OnChange:function(){
  eval(this.event);
  this.style.background ="";
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值