My97DatePicker是很不错的一个日期选择插件,体积只有几十k但是功能非常强大。官网:http://www.my97.net/
能满足很多苛刻的要求。
My97DatePicker 如果两个输入框,第一个不大于第二个,都不大于当前日期,两个输入框之间的时间不超过30天。做法。
如果第二个直接设置比第一个大的范围不超过30天,那么遇到算出来的日期大于当前日期的情况,就会发生第二个输入框可以选择到今天之后的日期。所以要动态地修改第二个输入范围。
1.设置第一个不大于第二个,不大于当前日期。 最小为第二个日期减去30天。 并为其设置选中和清空时的事件(用于对第二个输入框进行控制)
2.第二个的规则用函数表示。 设置最大值为一个全局变量。 通过第一个的两个事件来修改这个全局变量。
两个日期选择窗口:
- <input type="text" style="width:90px;" name="date1" id="datepicker1" size="24" onfocus="WdatePicker({maxDate:'#F{$dp.$D(\'datepicker2\')||\'new Date()\'}',minDate:'#F{$dp.$D(\'datepicker2\',{d:-30})}',onpicked:pickedFunc,oncleared:clearedFunc}) " value="" />
-
- t;input type="text" style="width:90px;" name="date2" id="datepicker2" size="24" onfocus="picker2rule(this)" value="" />
动态修改第二个日期选择窗口的函数:
- <script type="text/javascript">
- var md=new Date();
-
- function pickedFunc(){
-
- var Y=$dp.cal.getP('y');
- var M=$dp.cal.getP('M');
- var D=$dp.cal.getP('d');
- M=parseInt(M,10)-1;
- D=parseInt(D,10)+30;
- var d = new Date()
- d.setFullYear(Y,M,D)
- var nowDate=new Date();
- if(nowDate<=d){
- md=nowDate;
- }else{
- var month=d.getMonth()+1;
- md=d.getFullYear()+"-"+month+"-"+d.getDate();
- }
- }
-
- function clearedFunc(){
- md=new Date();
- }
-
- function picker2rule(ele){
- WdatePicker({el:ele,minDate:'#F{$dp.$D(\'datepicker1\')}',maxDate:md})
- }
- </script>
效果示例:
第一个没有选择时第二个状态:
第一个选择日期,日期加上30天不超过当前日期的情况 第一个选5月5日,第二个的情况:
第一个选择日期,日期加上30天超过当前日期的情况 第一个选5月5日,第二个的情况:
第一个清空的时候,第二个的情况: