piperzero 发表于 2013-1-26 14:39:13

有关日期手工输入验证、日期弹出框、数值输入验证、必须输入验证等(共三个文件)

页面文件:inputCheck.htm
<html>         <head>   <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">       <meta   name="GENERATOR"   content="Microsoft   FrontPage   4.0">   <meta   name="ProgId"   content="FrontPage.Editor.Document">   <title>JK的普通输入验证示例</title>   <mce:script   language="Javascript"   src="commonForManage.js" mce_src="commonForManage.js"></mce:script>   </head>         <body>   <form   name=frm      method=post   >         <table   align=center   style="border:   1   solid   #000000" mce_style="border:   1   solid   #000000">   <tr><td>数值1<font   color=red>*</font><input   name=a   alt="数值1"      ></td>   <td>数值2:<input   name=b      ><font   size=-3>(大于-1,小于1)</font></td>   <td>数值3:<input   name=b      ><font   size=-3>(大于或等于0,小于蔌等于1)</font></td>   </tr>         <tr><td>整数1<font   color=red>*</font><input   name=a   alt="整数1"      ></td>   <td>整数2:<input   name=b      ><font   size=-3>(大于-100,小于100)</font></td>   <td>整数3:<font   size=-3><input   name=b      ></td>   (大于或等于0,小于或?/font>扔?00)</tr>         <tr><td>日期1<font   color=red>*</font><input   name=a   alt="日期1"      ondblclick="getDateFromDialog(this);"></td>   <td>日期2:<input   name=b      ondblclick="getDateFromDialog(this);"></td>   <td>注:双击输入框可以弹出日历</td>   </tr>         <tr><td>编号1<font   color=red>*</font><input   name=a   alt="编号1"      ></td>   <td>编号2:<input   name=b      ></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   name=a   alt="输入1"   ></td>   <td>输入2:<input   name=b   value=2   ></td>   <td>不限制输入内容</td>   </tr>             <tr><td>选择1<font   color=red>*</font><select   name=c   alt="选择1">   <option   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   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   type=checkbox   name=e   value=5   ><input   type=checkbox   name=e   value=2   ><input   type=checkbox   name=e   value=3   ></td>   <td>单选<input   type="radio"   value="1"   checked   name="f"><input   type="radio"   value="2"   checked   name="f"><input   type="radio"   value="3"   checked   name="f"></td>   <td></td>   </tr>         <tr><td   colspan=2>   <input   type=button   value=确定   >   <input   type=button   value=清空   >   </td></tr>   <tr><td   colspan=3>   <pre>   说明:   1.由于当输入错误时,blur事件检查到有错误时使用了focus方法,故所有的输入框的预             设值(包括所有的非手工输入的值)必须正确,否则有可能发生抢焦点的死循环   2.必须输入的验证使用了遍历,请反对遍历的朋友包涵   3.JK欢迎各位指点   </pre>   </td></tr>         </table>   </form>   </body>         </html>   
输入检查文件:commonForManage.js
function   checkNecessaryInput(obj) //用于检查一个表单内所有必须输入的栏位是否输入完整   {   var   s="";   var   i;   var   j=0;   for   (i=0   ;(i<obj.elements.length)&&(j<10);i++)   {   if   ((   obj.elements.alt   !=   null   )   &&   (obj.elements.alt.length>0)   &&   (obj.elements.value!=null)   &&   (obj.elements.value.length==0)   )   {   s+="\n"+obj.elements.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}\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);   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.type=="text")   b.value="";   }   b=a.getElementsByTagName("SELECT");   for   (var   i=0;i<b.length;i++)   {   b.options.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;   }                   }   
日历文件:calendar.htm
<html>   <head>   <title>日历</title>   <mce:style><!--   TD{         font-size:9pt;         }   --></mce:style><style mce_bogus="1">   TD{         font-size:9pt;         }   </style>   </head>         <body><table   align=center><tr><td   width=80%>   <mce:script   language=javascript><!--   document.write("<select   name=yearInput   onchange=\'showCalendar()\'>");   for   (var   i=1930;i<2200;i++)   document.write("<option   value=\'"+i+"\'>"+i+"</option>");   document.write("</select>年<select   name=monthInput   onchange=\'showCalendar()\'>");   for   (var   i=1;i<13;i++)   document.write("<option   value=\'"+i+"\'>"+i+"</option>");   document.write("</select>月");   document.write("</td><td   align=right><input   type=button   value=今天   onclick=\'returnToday();\'>");   // --></mce:script>   </td></tr></table>   <div   id="theCalendar"   align=center   width=100%   >   </div>   </body>   </html>         <mce:script   language="javascript"><!--   function   showCalendar() //日历显示   {   var   theCalendarContent="";   var   b=new   Date(yearInput.value+"\/"+monthInput.value+"\/"+1);   var   c=new   Date(yearInput.value+"\/"+(monthInput.value*1+1)+"\/"+0);   var   theMonthDays=c.getDate();   var   i=0;   var   j=b.getDay();   var   k=1;   theCalendarContent+="<table   ondblclick=\'getTD(event.srcElement)\'   border=1   style="\" mce_style="\"'border:   solid   1   #5661a8;   font-Size:   9pt;   font-family:   Arial;   background:   #e0e3f7\'   width=100%   align=center><tr   bordercolorlight=\'#5661a8\'   bordercolordark=\'#5661a8\'   style="\" mce_style="\"'background:   #5661a8;   color:   #ffffff\'><td   >周日</td><td>周一</td><td>周二</td><td>周三</td><td>周四</td><td>周五</td><td>周六</td></tr><tr>";   for   (j=0;j<b.getDay();j++)   theCalendarContent+="<td> </td>";   for   (i=0;(i<6)&&(k<theMonthDays+1);i++)   {   for   (j;j<7;j++)   {   if   (k<theMonthDays+1)       {       if   (j<6&&j>0)   theCalendarContent+="<td   bordercolorlight=\'#5661a8\'   align=\'center\'   style="\" mce_style="\"'color:#ff0000\'>"+(k++)+"</td>";   else   theCalendarContent+="<td   bordercolorlight=\'#5661a8\'   align=\'center\'>"+(k++)+"</td>";   }   else   theCalendarContent+="<td> </td>";   }   theCalendarContent+="</tr><tr   >";   j=0;   }   theCalendarContent+="</tr></table>";   theCalendar.innerHTML=theCalendarContent;   }         function   getTD(obj) //返回选中日期   {   if   (obj.tagName!="TD")   return   false;   if   (isNaN(obj.innerText)||(obj.innerText==0))   return   false;   var   a=yearInput.value+"-"+monthInput.value+"-"+obj.innerText;   window.returnValue=a;   window.close();   }         function   returnToday() //返回本日   {   var   todaydate=new   Date();   var   a=todaydate.getFullYear()+"-"+(todaydate.getMonth()+1)+"-"+todaydate.getDate();   window.returnValue=a;   window.close();   }         function   initCalendar() //初始化日历   {   var   a=window.dialogArguments;   var   b=new   Date();   if   ((a!=null)&&(a.length>4))   b=new   Date(a);   if   (isNaN(b))   b=new   Date();   yearInput.value=b.getFullYear();   monthInput.value=(b.getMonth()+1);   showCalendar();   }   initCalendar();         // --></mce:script>
页: [1]
查看完整版本: 有关日期手工输入验证、日期弹出框、数值输入验证、必须输入验证等(共三个文件)