7DatePicker_限制开始日期和结束日期在同一个月

来源:http://bluebing.iteye.com/blog/1863510

PS:最近使用springmvc+ibatis+mysql做项目的后台,涉及到大量统计页面.

其中一个表已有了400多万行数据,优化sql和增加索引后,效率仍然低下,并且数据还处于几何增长中.

几经折腾决定按月分表,月底把数据转移到上个月份命名的表中,当月表则不加后缀:即table_1303,table_1304,table(当月)...

之前大量的统计页面都使用了My97DatePicker时间控件来做查询.

因为按月加表是动态的,所以需要在查询过程中做限制,查询的起始时间和结束时间是同一个月.

网上搜索没有现成的,便自己写了一个js,这里备忘,也方便需要的人查找.

 

最后再附上简单的流程图.

碰到个问题 使用form:input时,控件中的$dp.$D便不能用,页面报错.猜测为在表单中clientID不一致了,

但不解.

 

 

 

Html代码  7DatePicker_限制开始日期和结束日期在同一个月
  1. <td class="label" width="10%">开始时间:</td>  
  2. <td width="10%"><input class="Wdate" type='text'  
  3.     id="beginTime" name="beginTime" value='${beginTime}'  
  4. onFocus="WdatePicker({minDate:'2013-04-01',maxDate:'#F{$dp.$D(\'endTime\')||\'%y-%M-%d\'}'})" />  
  5. </td>  
  6. <td width="10%"></td>  
  7. <td class="label" width="10%">结束时间:</td>  
  8. <td width="10%"><input class="Wdate" type='text'  
  9.     id='endTime' name='endTime' value='${endTime}'  
  10.     onFocus="var date=limitMonthDate(2);WdatePicker({minDate:'#F{$dp.$D(\'beginTime\')||\'2013-04-01\'}',maxDate:date})" />  
  11. </td>  

 

 控件的ofFocus事件中实现了以下功能:

        开始结束日期不得小于数据库表的创建时间(2013-04-01),且不得大于当天;

        结束日期不得小于起始日期,且不得大于当月;

       

 js的limitMonthDate()方法功能:

       限制两个时间为同一个月份.

 

 

Js代码  7DatePicker_限制开始日期和结束日期在同一个月
  1. <script language="javascript">  
  2.     //限制开始和结束时间为同一个月  
  3.     function limitMonthDate(e) {  
  4.         var DateString;  
  5.         if (e == 2) {  
  6.             var beginDate = $dp.$("beginTime").value;  
  7.             if (beginDate != "" && beginDate != null) {  
  8.                 var limitDate = new Date(beginDate);  
  9.                 limitDate.setDate(new Date(limitDate.getFullYear(), limitDate  
  10.                         .getMonth() + 1, 0).getDate()); //获取此月份的天数  
  11.                 DateString = limitDate.getFullYear() + '-'  
  12.                         + (limitDate.getMonth() + 1) + '-'  
  13.                         + limitDate.getDate();  
  14.                 return DateString;  
  15.             }  
  16.         }  
  17.         if (e == 1) {  
  18.             var endDate = $dp.$("endTime").value;  
  19.             if (endDate != "" && endDate != null) {  
  20.                 var limitDate = new Date(endDate);  
  21.                 limitDate.setDate("1"); //设置闲置时间为月初  
  22.                 DateString = limitDate.getFullYear() + '-'  
  23.                         + (limitDate.getMonth() + 1) + '-'  
  24.                         + limitDate.getDate();  
  25.                 return DateString;  
  26.             }  
  27.         }  
  28.           
  29.     }  
  30. </script>  

 
7DatePicker_限制开始日期和结束日期在同一个月