always there for you

善于生活,善于学习,这是我和你的目标.

« 当进行xhtml1.0检测时什么是独立IP访问?什么是PV值? »

表单验证程序

无聊ing...
     
  今天突然知道接下来几周有学位的培训课上,一下子接受不了,好久都没有上过课了...

  
  把这几天慢慢磨出来的表单验证程序给贴出来,希望大家跟我一起研究...


  先说使用方法吧!

  1.在要使用表单验证的页面里:
     <script src="表单验证.js" type="text/javascript"></script>

  2.在表单里需要验证的控件里添加属性:
   例如:

   <form id="Grade">
   <input type="text" name="Test" errMsg=" 请填写正确格式的帐号" patrn="^\d{10}$" msg=" 请输入帐号"/>
   </form>


  3.在body区里建一个表单验证的实例:
    always_there=new validFrm("Grade",30);
    //"Grade"为表单的ID
           //30为提示信息与表单控件之间的距离

  
  以下是表单验证.js的内容,注意此表单验证程序某些地方并不是通用的,大家可以自己修改:
  //表单验证程序
  //always_there
  //2007-12-10

  //获取触发事件源的坐标
   function getAbsolutePos(e1)
   {
    var _p={x:0,y:0};
    do
   {
     _p.x+=e1.offsetLeft;
     _p.y+=e1.offsetTop;
   }while(e1=e1.offsetParent)
    return _p;
  }

  //表单验证程序
  function validFrm(frmId,distance)
  {
    //初始化
    this.distance=distance;
    this.frm=document.forms[frmId];
    //表单提交验证
    this.frm.onsubmit=function()   
{
     for(var j=0;this.elements.all(j);j++)
     {
      if(this.elements.all(j).validating==false)
      return false;
     }
     return true;
    };
  
   for(var i=0;this.frm.elements.all(i);i++)
    {
     //如果需要验证
     if(this.frm.elements.all(i).msg)
     {
      //创建提示区域
      this.frm.elements.all(i).tip=new odiv(this.frm.elements.all(i),this.distance);
      this.frm.elements.all(i).validating=false;

      //注册事件
      this.frm.elements.all(i).onfocus=function() 
      {
       this.tip.div.hide();
      }
      this.frm.elements.all(i).onblur=function() 
      {
       if(this.value=="") //-表单控件为空时
       {
        this.validating=false;
        this.tip.div.show(this.msg);
        return;
       }
        var re=new RegExp(this.patrn);
       if(!re.test(this.value))
        {
         this.validating=false;
         this.tip.div.show(this.errMsg);
        }
       else
        {
         this.validating=true;
         this.tip.div.hide();
        }
      };
      }
    }
   }

  //创建提示信息对象
  function odiv(obj,distance)
   {
    this.div=document.createElement("div")
    this.div.className="errShow";
    this.div.style.position="absolute";
    this.div.style.left=getAbsolutePos(obj).x+obj.offsetWidth+distance+"px";
    this.div.style.top=getAbsolutePos(obj).y+"px";
    document.body.appendChild(this.div);
    this.div.show=function(msg)
    {
     this.innerHTML="<img src='/images/check_error1.gif' />"+msg;   
     this.style.display="";                                

   };
    this.div.hide=function()
    {
     this.style.display="none";
    };
  }

  

  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Copyright www.alwaysthere.com.cn . Some Rights Reserved.

              

Powered By Z-Blog 1.8 Devo Build 80201