Выделение определенной даты серым цветом в пользовательском интерфейсе jQuery не работает

#javascript #jquery #datepicker #frontend

#javascript #jquery #выбор даты #интерфейс

Вопрос:

С помощью приведенного ниже кода я пытаюсь выделить серым цветом 21/12/2020, потому что мы не отправляем до вторника (22/12/2020). Я не могу найти, что не так в приведенном ниже коде. Пожалуйста, укажите на ошибку в коде, из-за которой он может не работать.

 <script>
    jQuery(document).ready( function() {
        jQuery(function() {
            jQuery("#ship_date").datepicker( {
            var minDate;
                // get current date
                var d = new Date();
                var month = d.getMonth() 1;
                var day = d.getDate();
                var current_date = (month<10 ? '0' : '')   month   '/'   (day<10 ? '0' : '')   day   d.getFullYear()   '/'; 
    
                if (current_date < new Date(11, 22, 2020) {
                    minDate = new Date( 11, 22, 2020 );
                } else {
                    minDate =  1;
                }
                maxDate: ' 2M',
                beforeShowDay: jQuery.datepicker.noWeekends
            } );
        });
    });
</script>
 

Ответ №1:

ОБНОВЛЕН ответ в соответствии с запросом от PKTG:

 <script>
      $( function() {
        var cuttoffdate = new Date(2020,11, 22);
        $( "#ship_date" ).datepicker(
        {
                    maxDate: ' 2M',
                     beforeShowDay: function (date) {
                        show = true;
                        if (date.getDay() === 0 || date.getDay() === 6) { show = false; }
                        if(date<cuttoffdate) { show=false;};
                        var display = [show, '', (show) ? '' : 'Not available'];
                        return display;
                    }
                }
        );
      } );

</script>
 

Комментарии:

1. глядя на мой код, это можно было бы сделать немного лучше, добавив разрыв; в цикле, когда он находит дату, также не проверяя праздники, если это выходные (в моем случае я хочу) — может быть, используя hashset или что-то еще для определения даты ??, но этопоказать «принцип» того, как это сделать..

2. Спасибо, Антон. Не могли бы вы сказать, можно ли использовать оператор сравнения с датами, как я здесь, если (current_date < exlude_date) ?

3. вы должны помнить, что даты — это очень сложная вещь, особенно в браузерах и потому, что мы находимся по всему миру (что-то, что вы должны учитывать, это разные часовые пояса, такие вещи, как переход на летнее время и т. Д.) .. так что, сказав это, я использовал «moment.js » для всех / большинства моих дат на веб-сайтах и дляработайте с ними правильно — преобразуйте все даты в UTC, а затем работайте с ними .. и да, тогда можно будет использовать операции сравнения.. смотрите : momentjs.com

4. пример .. у кого-то в Новой Зеландии будет 1 января РАНЬШЕ, чем у кого-то в Англии… а потом в Англии иногда переходят на летнее время, что меняет ситуацию на час..

5. Да, я понимаю. Я смотрю, можно ли заставить мой код работать. Пожалуйста, посмотрите, есть ли способ.