【问题标题】:Restrict Sundays between date range - jQuery Datepicker限制日期范围之间的星期日 - jQuery Datepicker
【发布时间】:2015-08-01 10:28:17
【问题描述】:

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

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

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

任何帮助都会很棒。

【问题讨论】:

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


【解决方案1】:

如果它是一组静态的星期天,您可以简单地使用一个包含您想要禁用的日期的数组 [取自 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,因为大多数时候人类读取这些数组,最好让它们可读。当然,如果可读性对您来说不是那么重要,您可以将日期保留为您喜欢的任何格式。

【讨论】:

  • 这太棒了!有没有办法有一个日期范围而不是静态数组?或者可能有一个函数来根据开始和结束日期填充数组?
  • 我在答案中添加了一个函数来获取两个日期之间的所有星期日日期。请注意,该函数获取日期为 yyyy-mm-dd 并使用相同格式填充数组。如果这有帮助,请将我的答案标记为“已接受”答案:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多