限制日期范围之间的星期日 - jQuery Datepicker

时间:2015-05-20 09:10:07

标签: javascript jquery datepicker jquery-ui-datepicker uidatepicker

我有一个jQuery日期选择器,我需要执行以下操作:

  • 禁用特定日期范围之间的所有星期日

我知道我需要使用beforeShowDay函数,但似乎无法使用Stack Overflow上的其他答案和示例来实现它。

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

如果它是一个静态的星期日,你可以简单地使用一个数组,其中包含你要禁用的日期[取自Jquery UI datepicker. Disable array of Dates]:

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 ]
    }
});

如果你想制作一组动态星期日,你必须创建一个函数来从开始日期和结束日期获得一系列星期日。

这是一个完全正确的功能:

function addSundaysToArray(fromDate, toDate, datesToDisable){
  fromDate = new Date(fromDate);
  toDate = new Date(toDate);
  while(fromDate < toDate){
      fromDate.setDate(fromDate.getDate() + 1);

      if(fromDate.getDay() === 0){
          var year = fromDate.getFullYear();
          var month = fromDate.getMonth() + 1;
          month = (month + '').length == 1 ? '0' + month : month;
          var day = fromDate.getDate();
          day = (day + '').length == 1 ? '0' + day : day;

          datesToDisable.push(year + "-" + month + "-" + day);
      }
  }
}

显然你可以在这里使用实际的日期对象,甚至毫秒。或者您可以跳过函数的数组输入,只返回一个包含日期的数组。

我选择将日期表示为yyyy-mm-dd,因为大多数时候人们会阅读这些数组,并且最好让它们具有可读性。当然,如果可读性对您来说并不重要,您可以按照您喜欢的任何格式保留日期。