bootstrap-daterangepicker 双日历控件

需要bootstrap跟jquery的支持。
实例代码:
[html]  view plain  copy
  1. <!DOCTYPE html>  
  2. <html>  
  3.     <head>  
  4.         <meta charset="UTF-8">  
  5.         <title></title>  
  6.         <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">  
  7.         <link rel="stylesheet" type="text/css" media="all" href="daterangepicker/daterangepicker.css" />  
  8.     </head>  
  9.     <body>  
  10.         <form class="form-inline">  
  11.             <div id="divDateId" class="pull-left dateRange">  
  12.                 <input class="form-control" id="searchDate"></input>  
  13.                 <i class="glyphicon glyphicon-calendar fa fa-calendar"></i>  
  14.             </div>  
  15.         </form>  
  16.     </body>  
  17.     <script type="text/javascript" src="jquery/1.12.4/jquery.min.js" ></script>  
  18.     <script type="text/javascript" src="bootstrap/js/bootstrap.min.js" ></script>  
  19.     <script type="text/javascript" src="daterangepicker/moment.min.js" ></script>  
  20.     <script type="text/javascript" src="daterangepicker/daterangepicker.js" ></script>  
  21.     <script type="text/javascript">  
  22.         //默认三十天  
  23.         $('#divDateId input').val(moment().subtract('days', 29).format('YYYY-MM-DD') + ' - ' + moment().format('YYYY-MM-DD'));  
  24.         $('#divDateId').daterangepicker({  
  25.             minDate: '01/01/2015',  //最小时间  
  26.             maxDate : moment(), //最大时间   
  27.             dateLimit : {  
  28.                 days : 365*5  
  29.             }, //起止时间的最大间隔  
  30.             showDropdowns : true,  
  31.             showWeekNumbers : false, //是否显示第几周  
  32.             timePicker : false, //是否显示小时和分钟  
  33.             timePickerIncrement : 60, //时间的增量,单位为分钟  
  34.             timePicker12Hour : false, //是否使用12小时制来显示时间  
  35.             ranges : {  
  36.                 //'最近1小时': [moment().subtract('hours',1), moment()],  
  37.                 '今日': [moment().startOf('day'), moment()],  
  38.                 '昨日': [moment().subtract('days', 1).startOf('day'), moment().subtract('days', 1).endOf('day')],  
  39.                 '最近7日': [moment().subtract('days', 6), moment()],  
  40.                 '最近30日': [moment().subtract('days', 29), moment()]  
  41.             },  
  42.             opens : 'right', //日期选择框的弹出位置  
  43.             buttonClasses : [ 'btn btn-default' ],  
  44.             applyClass : 'btn-small btn-primary blue',  
  45.             cancelClass : 'btn-small',  
  46.             format : 'YYYY-MM-DD', //控件中from和to 显示的日期格式  
  47.             separator : ' to ',  
  48.             locale : {  
  49.                 applyLabel : '确定',  
  50.                 cancelLabel : '取消',  
  51.                 fromLabel : '起始时间',  
  52.                 toLabel : '结束时间',  
  53.                 customRangeLabel : '自定义',  
  54.                 daysOfWeek : [ '日', '一', '二', '三', '四', '五', '六' ],  
  55.                 monthNames : [ '一月', '二月', '三月', '四月', '五月', '六月',  
  56.                                '七月', '八月', '九月', '十月', '十一月', '十二月' ],  
  57.                                firstDay : 1  
  58.             }   //汉化日期控件  
  59.         }, function(start, end, label) {  
  60.             //格式化日期显示框  
  61.             $('#searchDate').val(start.format('YYYY-MM-DD') + ' - ' + end.format('YYYY-MM-DD'));  
  62.         });  
  63.     </script>  
  64. </html>  

实例图片:

参数说明:
  1. `startDate`: (Date object, moment object or string) 起始时间
  2. `endDate`: (Date object, moment object or string) 结束时间
  3. `minDate`: (Date object, moment object or string) 可选最早时间
  4. `maxDate`: (Date object, moment object or string) 可选最迟时间
  5. `timePicker`: (boolean) 是否显示time选择
  6. `timePickerIncrement`: (number) time选择递增数
  7. `timePicker12Hour`: (boolean) 是否12小时制
  8. `opens`: (string: 'left'/'right') 显示在元素左边还是右边
  9. `buttonClasses`: (array) 按钮样式
  10. `applyClass`: (string) 应用按钮样式
  11. `cancelClass`: (string) 取消按钮样式
  12. `format`: (string) date/time格式
  13. `separator`: (string) 分隔符
  14. `locale`: (object) 本地设置
  15. `singleDatePicker`: (boolean) 是否是单个时间选择器
  16. `parentEl`: (string) 将控件放到哪个元素内,默认body

其中有一个小需求调整,当我们直接使用源码选择时,为啦方便用户操作,控件在下拉选择月份时,自动帮我们刷新啦另一个控件上的日期,两个日期相差都在一个月,比如我选择1月到6月时,两个日期面板上显示不上一个1月,一个六月,如图:

如果不需要这种变化,可以修改daterangepicker.js的代码:
注释1444行跟1445行,1448跟1449行,不让它自动去改变日期面板:

在注释掉582行:


这样就能达到改变日期不改变面板的效果啦:


猜你喜欢

转载自blog.csdn.net/ziwuzhulin/article/details/80093890