Отключить все воскресенья, кроме одного, в jQuery UI Datepicker - PullRequest
3 голосов
/ 24 февраля 2012

Я пытаюсь настроить jQuery UI datepicker для сайтов моих клиентов, и он должен скрывать определенные дни, а также все воскресенья, КРОМЕ материнского воскресенья.В настоящее время мой код, заимствованный из другого ответа, выглядит так:

        function nonWorkingDates(date){
            var day = date.getDay(), Sunday = 0, Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6;
            var closedDates = [[02,24,2012],[03,14,2012],[03,15,2012],[03,20,2012],[03,21,2012],[03,23,2012],[03,26,2012],[03,27,2012]];
            var closedDays = [[Sunday]];  
            var mothersDay = [[04,18,2012]];  
            for (var i = 0; i < closedDays.length; i++) {
                if (day == closedDays[i][0]) {
                    return [false];
                }
            }
            for (i = 0; i < closedDates.length; i++) {
                if (date.getMonth() == closedDates[i][0] - 1 && date.getDate() == closedDates[i][1] && date.getFullYear() == closedDates[i][2]) {
                    return [false];
                }
            }
            return [true];
        }       
        <%-- Load jQuery UI Calendar --%>
        $(function() {
            jQuery("#calendar1").datepicker({
            beforeShowDay: nonWorkingDates,
            dateFormat: 'dd/mm/yy'
            });         
        });

Есть ли простой способ сделать это?

1 Ответ

1 голос
/ 24 февраля 2012

Вы можете просто добавить еще одно условие для «особых» дат перед другой логикой:

function nonWorkingDates(date) {
    var day = date.getDay(),
        Sunday = 0,
        Monday = 1,
        Tuesday = 2,
        Wednesday = 3,
        Thursday = 4,
        Friday = 5,
        Saturday = 6;
    var closedDates = [
        [02, 24, 2012],
        [03, 14, 2012],
        [03, 15, 2012],
        [03, 20, 2012],
        [03, 21, 2012],
        [03, 23, 2012],
        [03, 26, 2012],
        [03, 27, 2012]];

    var closedDays = [[Sunday]];
    var mothersDay = [03, 18, 2012];  

    /* Mother's day check: */
    if (date.getMonth() === mothersDay[0] - 1 &&
        date.getDate() === mothersDay[1] &&
        date.getFullYear() === mothersDay[2]) {

            return [true];
    }                                 

    for (var i = 0; i < closedDays.length; i++) {
        if (day == closedDays[i][0]) {
            return [false];
        }
    }
    for (i = 0; i < closedDates.length; i++) {
        if (date.getMonth() == closedDates[i][0] - 1 &&
            date.getDate() == closedDates[i][1] &&
            date.getFullYear() == closedDates[i][2]) {

            return [false];
        }
    }
    return [true];
}

Пример: http://jsfiddle.net/6wwSn/

...