JQuery UI Datepicker отключить месяц - PullRequest
0 голосов
/ 08 мая 2020

Я сделал datepicker, где я блокирую определенные даты с параметром beforeShowDay. Я столкнулся с проблемой, когда в конце месяца я блокирую некоторые даты, а доступных дат не остается. Но этот месяц все еще появляется. Мне нужно отключить текущий месяц на datepicker, если нет другой его даты.

function noWeekendsOrHolidays(date) {

    var noWeekend = jQuery.datepicker.noWeekends(date);
    console.log(noWeekend[0] ? unavailable(date) : noWeekend)
    return noWeekend[0] ? unavailable(date) : noWeekend;
}


function getDaysInMonth (date) {
    return new Date(date.getFullYear(), date.getMonth(), 0).getDate();
}

function minDate(date = new Date()) {
    let t = new Date();
    let left = getDaysInMonth(t) - t.getDate();
    let h = t.getHours();
    let res = (h < 12 && left > 0) ? '0d' : '1d';

    let nextDay = new Date(new Date(t).setDate(t.getDate() + 1)).getDay();
    let isNextDayWeekend = nextDay === 6 || nextDay === 0;
    if(left === 1 &&  isNextDayWeekend){
        res = '2d';
    }
    return res;
}


$( document ).on( "focus", "input.datepicker:not(.hasDatepicker)", function() {
    $( this ).datepicker({
        maxDate: '3m',
        minDate: minDate(),
        constrainInput: true,
        beforeShowDay: noWeekendsOrHolidays,
        buttonImageOnly: true,
        numberOfMonths: 1,
        showButtonPanel: false,
        showAnim: 'slideDown'
    });
});
...