很全的输入验证信息

2007-12-11 01:53 来源: 作者: 网友评论 0 条 浏览次数 14

  
  function   checkNecessaryInput(obj) //用于检查一个表单内所有必须输入的栏位是否输入完整  
  {  
  var   s="";  
  var   i;  
  var   j=0;  
  for   (i=0   ;(i<obj.elements.length)&&(j<10);i++)  
  {  
  if   ((   obj.elements[i].alt   !=   null   )   &&   (obj.elements[i].alt.length>0)   &&   (obj.elements[i].value!=null)   &&   (obj.elements[i].value.length==0)   )  
  {  
  s+="\n"+obj.elements[i].alt; //遍历所有输入,如果必须输入且没有输入值,就将其内容加到警告信息中去  
  j=j+1;  
  }  
  }  
  if   (j   >   0   )  
  {  
  alert   ("以下资料必须输入"+s);  
  return   false;  
  }  
  return   true;  
  }  
   
   
  function   checkDecimalInput(obj,min,max) //作用是将输入变成Number(10,6)格式,默认范围是非负。  
  {  
  obj.value=obj.value.replace(/   /g,""); //去空格  
  if   (obj.value=="")   return   false;  
  if   (obj.value.substr(0,1)==".")   obj.value="0"+obj.value;  
  if   (obj.value.substr(0,2)=="-.")   obj.value=obj.value.replace("-.","-0.");  
  var   r,   re;  
  var   s   =   obj.value   ;  
  var   theMin=-0.0000001;  
  var   theMax=10000000000;  
  if   (min!=null)   theMin=min;  
  if   (max!=null)   theMax=max;  
  if   (s.length==0)   return   false;  
  re   =   /-{0,1}\d{1,10}\.{0,1}\d{0,6}/i;  
  r   =   s.match(re); //取数  
  if   (r==null)  
  {  
  obj.value="";  
  alert("!!!!请注意:\n您刚才输入的数值不正确,我们已进行了清除。");  
  obj.focus();  
  return   false;  
  }    
  if   ((r>=theMax)||(r<=theMin))    
  {  
  obj.value="";  
  alert("!!!!请注意:\n您刚才输入的数值超出允许范围,我们已进行了清除。");  
  obj.focus();  
  return   false;  
  }    
  if   (   r!=s)    
  {  
  obj.value=r;  
  alert("!!!!请注意:\n您刚才输入的数值不正确,我们已进行了修改。");  
  obj.select();  
  obj.focus();  
  return   false;  
  }  
  obj.value=r;  
  }  
   
  function   checkIntInput(obj,min,max) //作用是将输入变成整数,默认范围是非负。onblur   event  
  {  
  obj.value=obj.value.replace(/   /g,""); //去空格  
  if(obj.value=="")   return   false;  
  var   r;  
  var   s   =   obj.value   ;  
  var   theMin=-1;  
  var   theMax=10000000000;  
  if   (min!=null)   theMin=min;  
  if   (max!=null)   theMax=max;  
  if   (s.length==0)   return   false;  
  r   =   parseInt(s);; //取数  
  if   (r==null||isNaN(r))  
  {  
  obj.value="";  
  alert("!!!!请注意:\n您刚才输入的整数不正确,我们已进行了清除。");  
  obj.focus();  
  return   false;  
  }    
  if   ((r>=theMax)||(r<=theMin))    
  {  
  obj.value="";  
  alert("!!!!请注意:\n您刚才输入的整数超出允许范围,我们已进行了清除。");  
  obj.focus();  
  return   false;  
  }    
  if   (   r!=s)    
  {  
  obj.value=r;  
  alert("!!!!请注意:\n您刚才输入的整数不正确,我们已进行了修改。");  
  obj.select();  
  obj.focus();  
  return   false;  
  }  
  obj.value=r;  
  }  
   
  function   checkDateInput(obj)     //用于检查日期输入是否正确   (日期输入范围为1930-01-01   到2200-12-31)  
  {  
  if   (obj.value.length==0)   return   false;  
  var   objValue=obj.value.replace(/[-\.]/g,"/");  
   
  try  
  {  
  var   a=new   Date(objValue);  
  if   (isNaN(a))  
  {  
  obj.value="";  
  alert("!!!!请注意:\n您刚才输入的日期不正确,我们已进处了清除。");  
  obj.focus();  
  return   false;  
  }  
  var   b;  
  if   (a.getFullYear()<1900||a.getFullYear()>2200)  
  {var   Today=new   Date();  
  b=Today.getFullYear()+"-"+(a.getMonth()+1)+"-"+a.getDate();  
  }  
  else   if   (a.getFullYear()<1930)  
  b=(a.getFullYear()+100)+"-"+(a.getMonth()+1)+"-"+a.getDate();  
  else   b=a.getFullYear()+"-"+(a.getMonth()+1)+"-"+a.getDate();  
  obj.value=obj.value.replace(/[-\.\/]0*/g,"-");  
  if   (b!=obj.value)  
  {  
  obj.value=b;  
  alert("!!!!请注意:\n您刚才输入的日期不正确,我们已进行了修改。");  
  obj.select();  
  obj.focus();  
  return   false;  
  }  
  }  
  catch(Exception)  
  {  
  obj.value="";  
  alert("!!!!请注意:\n您刚才输入的日期不正确,我们已进处了清除。");  
  obj.focus();  
  return   false;  
  }  
  return   true;  
  }  
   
  function   getDateFromDialog(obj) //利用弹出输入日期  
  {  
  checkDateInput(obj);    
  var   a=showModalDialog("calendar.htm",obj.value.replace(/[-\.]/g,"\/"),"status:no;resizable:no;help:no;dialogHeight:220px;dialogWidth:319px;DialogLeft:"+event.screenX+";DialogTop:"+event.screenY);  
  if   (a!=null)   obj.value=a;  
  }  
   
  function   checkNoInput(obj)     //用于检查编号输入是否正确。编号由字母、数字、_、-组成  
  {  
  if   (obj.value.length==0)   return   false;  
  var   objValue=obj.value.replace(/   /g,"/");  
  var   a=/[\w-\.]{1,30}/i;  
  var   b=objValue.match(a);  
  if   (b==null)  
  {  
  obj.value="";  
  alert("!!!!请注意:\n您刚才输入的编号不正确,我们已进行了清除。");  
  obj.focus();  
  return   false;  
  }    
  if   (   b!=objValue   )    
  {  
  obj.value=b;  
  alert("!!!!请注意:\n您刚才输入的编号不正确,我们已进行了修改。");  
  obj.select();  
  obj.focus();  
  return   false;  
  }  
  }  
   
  function   checkMonthInput(obj) //JK   20020815   用于检查纠正yyyymm形式的月份输入  
  {  
   
  obj.value=obj.value.replace(/   /g,"");  
  if   (obj.value.length==0)   return   false;  
  var   a=/((19)|(20))\d\d[0,1]{0,1}\d/i;  
  var   b;  
  var   c;  
  if   (!(a.test(obj.value)))  
  {  
  obj.value="";  
  alert("!!!!请注意:\n您刚才输入的月份不正确,我们已进行了清除。");  
  obj.focus();  
  return   false;  
  }  
  else  
  {  
  b=obj.value.match(a)[0];  
  b=b.substring(0,4)+"/"+b.substring(4,6)+"/1";  
  c=new   Date(b);  
  b=c.getFullYear()+""+(c.getMonth()+1);  
  if   (b.length<6)  
  b=c.getFullYear()+"0"+(c.getMonth()+1);  
  if   (b!=obj.value)  
  {  
  obj.value=b;  
  alert("!!!!请注意:\n您刚才输入的月份不正确,我们已进行了修改。");  
  return   false;  
  }  
  }  
   
  }  
   
  function   resetProcess(obj) //JK   20020619   用于将指定obj内的所有text-input与select的值清空  
  {  
  var   a;  
  if   (obj==null)   a=document.all("theQueryConditionTable");  
  else   a=obj;  
  if   (a==null)   return   false;  
  var   b=a.getElementsByTagName("INPUT");  
  for   (var   i=0;i<b.length;i++)  
  {  
  if   (b[i].type=="text")   b[i].value="";  
  }  
  b=a.getElementsByTagName("SELECT");  
  for   (var   i=0;i<b.length;i++)  
  {  
  b[i].options[0].selected=true;  
  }  
  }  
   
    function   roundFun(numberRound,roundDigit)   //四舍五入,保留位数为roundDigit   ,供计算时用  
   
    {  
    if   (numberRound>=0)  
    {  
  var   tempNumber   =   parseInt((numberRound   *   Math.pow(10,roundDigit)+0.5))/Math.pow(10,roundDigit);  
  return   tempNumber;  
  }  
  else    
    {  
  numberRound1=-numberRound  
  var   tempNumber   =   parseInt((numberRound1   *   Math.pow(10,roundDigit)+0.5))/Math.pow(10,roundDigit);  
  return   -tempNumber;  
  }  
   
            }   

把上面的保存为文件commonForManage.js  
  <HTML><HEAD><TITLE>JK的普通输入验证示例</TITLE>  
  <META   content="text/html;   charset=gb2312"   http-equiv=Content-Type>  
  <META   content="Microsoft   FrontPage   5.0"   name=GENERATOR>  
  <META   content=FrontPage.Editor.Document   name=ProgId>  
  <STYLE>TD   {  
  FONT-SIZE:   12px  
  }  
  </STYLE>  
   
  <SCRIPT   language=Javascript   src="commonForManage.js"></SCRIPT>  
  </HEAD>  
  <BODY   style="FONT-SIZE:   12px">  
  <TABLE   align=center    
  style="BORDER-BOTTOM:   #000000   1px   solid;   BORDER-LEFT:   #000000   1px   solid;   BORDER-RIGHT:   #000000   1px   solid;   BORDER-TOP:   #000000   1px   solid;   FONT-SIZE:   12px;   WIDTH:   90%">  
      <FORM   method=post   name=frm   onsubmit="return   checkNecessaryInput(this);">  
      <TBODY>  
      <TR>  
          <TD>数值1<FONT   color=red>*</FONT><INPUT   alt=数值1   name=a    
              onblur=checkDecimalInput(this)   size="20"></TD>  
          <TD>数值2:<INPUT   name=b   onblur=checkDecimalInput(this,-1,1)   size="20">(大于-1,小于1)</TD>  
          <TD>数值3:<INPUT   name=b    
              onblur=checkDecimalInput(this,-0.0000001,1.0000001)   size="20">(大于或等于0,小于蔌等于1)</TD></TR>  
      <TR>  
          <TD>整数1<FONT   color=red>*</FONT><INPUT   alt=整数1   name=a    
              onblur=checkIntInput(this)   size="20"></TD>  
          <TD>整数2:<INPUT   name=b    
  onblur=checkIntInput(this,-100,100)   size="20">(大于-100,小于100)</TD>  
          <TD>整数3:<FONT   size=-3><INPUT   name=b    
              onblur=checkIntInput(this,-0.0000001,100.0000001)   size="20"></FONT>(大于或等于0,小于或等于0)</TD></TR>  
      <TR>  
          <TD>日期1<FONT   color=red>*</FONT><INPUT   alt=日期1   name=a    
              onblur=checkDateInput(this)   ondblclick=getDateFromDialog(this);   size="20"></TD>  
          <TD>日期2:<INPUT   name=b   onblur=checkDateInput(this)    
              ondblclick=getDateFromDialog(this);   size="20"></TD>  
          <TD>注:双击输入框可以弹出日历</TD></TR>  
      <TR>  
          <TD>编号1<FONT   color=red>*</FONT><INPUT   alt=编号1   name=a    
              onblur=checkNoInput(this)   size="20"></TD>  
          <TD>编号2:<INPUT   name=b   onblur=checkNoInput(this)   size="20"></TD>  
          <TD>注:编号里只能有<FONT   color=blue>数字</FONT>、<FONT   color=blue>字母</FONT>、<FONT    
              color=blue>-</FONT>、<FONT   color=blue>_</FONT>、<FONT    
      color=blue>.</FONT></TD></TR>  
      <TR>  
          <TD>输入1<FONT   color=red>*</FONT><INPUT   alt=输入1   name=a   size="20"></TD>  
          <TD>输入2:<INPUT   name=b   value=2   size="20"></TD>  
          <TD>不限制输入内容</TD></TR>  
      <TR>  
          <TD>选择1<FONT   color=red>*</FONT><SELECT   name=c   alt="选择1">   <OPTION    
                  selected   value="">请选择</OPTION>   <OPTION   value=1>一</OPTION>   <OPTION    
                  value=2>二</OPTION>   <OPTION   value=3>三</OPTION>   <OPTION   value=4>四</OPTION>    
                  <OPTION   value=5>五</OPTION></SELECT></TD>  
          <TD>选择2:<SELECT   name=d>   <OPTION   selected   value="">请选择</OPTION>   <OPTION    
                  value=1>一</OPTION>   <OPTION   value=2>二</OPTION>   <OPTION   value=3>三</OPTION>    
                  <OPTION   value=4>四</OPTION>   <OPTION   value=5>五</OPTION></SELECT></TD>  
          <TD> </TD></TR>  
      <TR>  
          <TD>复选<INPUT   name=e   type=checkbox   value=5><INPUT   name=e   type=checkbox    
              value=2><INPUT   name=e   type=checkbox   value=3></TD>  
          <TD>单选<INPUT   name=f   type=radio   value=1><INPUT   name=f   type=radio    
              value=2><INPUT   CHECKED   name=f   type=radio   value=3></TD>  
          <TD> </TD></TR>  
      <TR>  
          <TD   colSpan=3><INPUT   onclick="javascript:if   (checkNecessaryInput(frm))   frm.submit();"   type=button   value=确定>    
  <INPUT   onclick=javascript:resetProcess(frm);   type=button   value=清空>   </TD></TR>  
      <TR>  
          <TD   colSpan=3><PRE>说明:  
  1.由于当输入错误时,blur事件检查到有错误时使用了focus方法,故所有的输入框的预  
          设值(包括所有的非手工输入的值)必须正确,否则有可能发生抢焦点的死循环  
  2.必须输入的验证使用了遍历,请反对遍历的朋友包涵  
  </PRE></TD></TR>  
      <TR>  
          <TD   align=right   colSpan=3   width="100%"><A    
              href="http://fason.nease.net/">【阿信的小天地】</A></TD></TR></FORM></TBODY></TABLE></BODY></HTML>

上一篇:中文排版CSS心得    下一篇:Dreamweaver 正则..

相关主题:

网友评论