禁用 jQuery UI 日期选择器中的所有星期日和某些特定日期

问题描述 投票:0回答:4

我正在尝试禁用 jQuery UI 日期选择器中的所有星期日和一些特定日期。这些条件加在一起在我的代码中不起作用。只有周日才会被禁用。这是代码

var array = [, '2024-01-07', '2024-01-08', '2024-01-09', '2024-01-10']
$("#datepicker").datepicker({
  beforeShowDay: function(date) {
    var day = date.getDay();
    var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
    return [(day != 0), array.indexOf(string) == -1]
  }
});

我希望在日期选择器中禁用所有星期日和某些日期。

jquery jquery-ui jquery-ui-datepicker
4个回答
0
投票

您可以更新此行吗

return [(day!=0), array.indexOf(string) == -1 ]

有了这个

return [!((date.getDay() === 0) || array.includes(string)), true];

0
投票

参见演示

使用 jquery 禁用日期选择器中的所有星期日和某些特定日期

$(function() {
  var holidays = ['2024-1-7','2024-1-8','2024-1-9','2024-1-10'];
  function DisableDate(date) {
    var day = date.getDay();
    if (day != 0) {
      var d = date.getDate();
      var m = date.getMonth();
      var y = date.getFullYear();
      for (i = 0; i < holidays.length; i++) {
        if($.inArray((y) + '-' + (m+1) + '-' + d, holidays) != -1) {
          return [false];
        }
      }
      return [true];
    } else {
      return [day != 0, ''];
    }
  }

  $('#datepicker').datepicker({
    onClose: function(dateText, inst) { 
        $(this).attr("disabled", false);
    },
    beforeShow: function(input, inst) {
      $(this).attr("disabled", true);
    },
    beforeShowDay: DisableDate,
    minDate: 0,
    dateFormat: 'yy-mm-dd',
  });
});

0
投票

要禁用 jQuery 日期选择器中的所有星期日和特定日期,您可以按如下方式修改代码:

var array = ['2024-01-07', '2024-01-08', '2024-01-09', '2024-01-10'];

$("#datepicker").datepicker({
  beforeShowDay: function (date) {
    var day = date.getDay();
    var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
    return [(day !== 0 && array.indexOf(string) === -1)];
  }
});

此处的关键更改是确保您在想要启用的日期返回 true。在本例中,返回的条件检查当天是否不是星期日(day !== 0)以及日期是否不在指定的数组中。

这样,星期日和数组中的特定日期都将在日期选择器中被禁用。日期选择器仅允许选择不在指定数组中的非星期日。


0
投票

必须是:

// date is not a sunday and
// date is not present in the array
return [day !== 0 && array.indexOf(string) === -1];

请注意,您只需要设置返回数组的第 0 项(docs)。

© www.soinside.com 2019 - 2024. All rights reserved.