My97DatePicker_限制开始日期和结束日期在同一个月 My97DatePicker限制开始日期和结束日期在同一个月
程序员文章站
2024-03-11 12:16:01
...
PS:最近使用springmvc+ibatis+mysql做项目的后台,涉及到大量统计页面.
其中一个表已有了400多万行数据,优化sql和增加索引后,效率仍然低下,并且数据还处于几何增长中.
几经折腾决定按月分表,月底把数据转移到上个月份命名的表中,当月表则不加后缀:即table_1303,table_1304,table(当月)...
之前大量的统计页面都使用了My97DatePicker时间控件来做查询.
因为按月加表是动态的,所以需要在查询过程中做限制,查询的起始时间和结束时间是同一个月.
网上搜索没有现成的,便自己写了一个js,这里备忘,也方便需要的人查找.
最后再附上简单的流程图.
碰到个问题 使用form:input时,控件中的$dp.$D便不能用,页面报错.猜测为在表单中clientID不一致了,
但不解.
<td class="label" width="10%">开始时间:</td> <td width="10%"><input class="Wdate" type='text' id="beginTime" name="beginTime" value='${beginTime}' onFocus="WdatePicker({minDate:'2013-04-01',maxDate:'#F{$dp.$D(\'endTime\')||\'%y-%M-%d\'}'})" /> </td> <td width="10%"></td> <td class="label" width="10%">结束时间:</td> <td width="10%"><input class="Wdate" type='text' id='endTime' name='endTime' value='${endTime}' onFocus="var date=limitMonthDate(2);WdatePicker({minDate:'#F{$dp.$D(\'beginTime\')||\'2013-04-01\'}',maxDate:date})" /> </td>
控件的ofFocus事件中实现了以下功能:
开始结束日期不得小于数据库表的创建时间(2013-04-01),且不得大于当天;
结束日期不得小于起始日期,且不得大于当月;
js的limitMonthDate()方法功能:
限制两个时间为同一个月份.
<script language="javascript"> //限制开始和结束时间为同一个月 function limitMonthDate(e) { var DateString; if (e == 2) { var beginDate = $dp.$("beginTime").value; if (beginDate != "" && beginDate != null) { var limitDate = new Date(beginDate); limitDate.setDate(new Date(limitDate.getFullYear(), limitDate .getMonth() + 1, 0).getDate()); //获取此月份的天数 DateString = limitDate.getFullYear() + '-' + (limitDate.getMonth() + 1) + '-' + limitDate.getDate(); return DateString; } } if (e == 1) { var endDate = $dp.$("endTime").value; if (endDate != "" && endDate != null) { var limitDate = new Date(endDate); limitDate.setDate("1"); //设置闲置时间为月初 DateString = limitDate.getFullYear() + '-' + (limitDate.getMonth() + 1) + '-' + limitDate.getDate(); return DateString; } } } </script>