jquery указатель даты исключает все дни, кроме вторника и пятницы, и исключает выбранные даты вместе - PullRequest
0 голосов
/ 09 марта 2020

Я пытался часами без удачи. Мне нужно сначала исключить все дни, кроме вторника и пятницы. Тогда есть ряд определенных вторников и пятниц, которые мне нужно отключить. В одиночку каждая функция работает отлично, но на всю жизнь они не будут работать вместе?

Работа исключает все дни, кроме вторника и пятницы:

$(function(){
    $("#datepicker").datepicker(
        { beforeShowDay: function(day) {
            var day = day.getDay();
            var taken = ["2020-03-17"];
            var isTaken = '2020-03-17';

            if (day == 0 || day == 1 || day == 3 || day == 4 || day == 6)  {
                return [false]
            } else {
                return [true];
            }
         }
        });

});

Работа исключает выбранные даты:

var array = ["03/17/2020","03/18/2020","03/19/2020"];

$(function(){

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

Как заставить их работать одновременно?

1 Ответ

1 голос
/ 10 марта 2020

Ты был почти весь путь, ты просто должен комбинировать свои условия. Рабочая JSFiddle .

Я внес некоторые другие незначительные изменения:

  • заменен jQuery на $ для согласованности;

  • переименовал некоторые переменные для ясности (например, это date, переданный beforeShowDay, а не day, array не напоминает нам, что это такое или что нам нужно делать с Это). Можно легко все перепутать, если у вас есть 3 или 4 переменные, и все они связаны с датами или датами;

  • Инвертировал тест дня недели. Вместо того, чтобы проверять, какой день запретить, проще думать о допустимых днях, особенно когда их меньше;

Вот код:

$(function(){

    var day, formatted,
        disallowed = ["03/17/2020","03/18/2020","03/19/2020"];

    $("#datepicker").datepicker({
        beforeShowDay: function(date) {
            day = date.getDay();            
            formatted = $.datepicker.formatDate('mm/dd/yy', date);

            // If it is a Tue or a Fri, AND it is not in the disallowed list, 
            // it should be selectable
            if ((day == 2 || day == 5) && disallowed.indexOf(formatted) === -1) {
                return [true];
            } else {
                return [false];
            }
        }
    })
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...