Jquery UI datepicker组合函数

时间:2014-11-25 09:21:29

标签: jquery-ui datepicker

我使用jquery UI datepicker示例站点中的脚本(1)。它提供了选择数据范围的能力。我添加了行" minDate:0"在今天之前禁用所有日期。 我想将它与我在Stack Overflow中找到的函数(2)结合起来。它会禁用日历中的日期数组。

我尝试将这些脚本组合在一起,但我不能让它们全部协同工作(选择日期范围,禁用今天之前的日期并禁用日期数组)。 非常感谢帮助。

(1)来自jquery UI datepicker示例站点的代码。这个pen有一个工作样本。

$(function() {
    $( "#from" ).datepicker({
      minDate: 0,
      changeMonth: true,
      numberOfMonths: 2,
      onClose: function( selectedDate ) {
        $( "#to" ).datepicker( "option", "minDate", selectedDate );
      }
    });
    $( "#to" ).datepicker({
      minDate: 0,
      changeMonth: true,
      numberOfMonths: 2,
      onClose: function( selectedDate ) {
        $( "#from" ).datepicker( "option", "maxDate", selectedDate );
      }
    });
  });


<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">
</head>

<body>

<label for="from">From</label>
<input type="text" id="from" name="from">
<label for="to">to</label>
<input type="text" id="to" name="to">


</body>

(2)禁用某些日期的脚本(link)(另请参阅此fiddle

var array = ["2013-03-14","2013-03-15","2013-03-16"]

$('input').datepicker({
    beforeShowDay: function(date){
        var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
        return [ array.indexOf(string) == -1 ]
    }
});

1 个答案:

答案 0 :(得分:0)

只需将这些选项组合起来:

var array = ["2014-12-14","2014-12-15","2014-12-16"];

$( "#from" ).datepicker({
      minDate: 0,
      changeMonth: true,
      numberOfMonths: 2,
      beforeShowDay: function(date){
        var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
        return [ array.indexOf(string) == -1 ]
      },
      onClose: function( selectedDate ) {
          if (selectedDate) {
            $( "#to" ).datepicker( "option", "minDate", selectedDate );
          }
      }
   });
$( "#to" ).datepicker({
      minDate: 0,
      changeMonth: true,
      numberOfMonths: 2,
      beforeShowDay: function(date){
        var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
        return [ array.indexOf(string) == -1 ]
      },
      onClose: function( selectedDate ) {
          if (selectedDate) {
             $( "#from ").datepicker( "option", "maxDate", selectedDate);
          }
      }
  });