Bootstrap 日期选择器,在 daysOfWeekDisabled 中启用几天

Bootstrap date picker, enable a few days in daysOfWeekDisabled

Bootstrap datePicker 允许我传递一个参数来禁用一周中的特定一天。像这样:

datePicker.datepicker({
    daysOfWeekDisabled: weekendDays
});

我希望能够在此禁用列表上启用特定日期。我试图使用 beforeShowDay 选项,但似乎我可以禁用那里的日期,但我无法启用。

根据文档,我可以 return 如果我想选择值,我可以指向一个布尔值,或者我可以 return 一个带有 enabled 属性 的对象,像这样:

datePicker.datepicker({
    daysOfWeekDisabled: weekendDays,
    beforeShowDay: function (date) {
        var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
        if(workingDays.indexOf(string) > -1){
            return {enabled: true, classes: "test"};
        }
    }
});

我可以使用 beforeShowDay 添加 class,我可以禁用日期。但是我无法启用它。

有人知道我该怎么做吗?

我建议将禁用 weekend 日期和启用某些日期的操作合并为一个。

例如:

var dates = ["19/07/2020"];

function disableDates(date) {
    let shouldDisable = false;
    
    // Disable dates if they are weekends
    if(date.getDay() == 0 || date.getDay() == 6){
      shouldDisable = true;
    }
    
    // Check if date is mentioned for enabling in the dates array. 
    var string = jQuery.datepicker.formatDate('dd/mm/yy', date);
    return [ !shouldDisable || dates.indexOf(string) != -1];
}

$(function() {
     $("#date").datepicker({
         beforeShowDay: disableDates
     });
});

这将使用一个函数提供对启用和禁用日期的更多控制。

示例 fiddle:https://jsfiddle.net/idhruvs/wdkprbsL/120/

我最终解决了使用 onShow 这样的事件

datePicker.datepicker({
    daysOfWeekDisabled: weekendDays,
    beforeShowDay: function (date) {
        var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
        if(workingDays.indexOf(string) > -1){
            return {enabled: true, classes: "force-enabled-day"};
        }
    }
}).on('show', function(e){
    $(".force-enabled-day").removeClass("disabled disabled-date");
});

我会将 Dhruv 的答案标记为正确的,因为它是一个看起来比我的解决方案更优雅的解决方案。