HTML / PHP: Как сделать проверку даты до / после отправки. Проверьте, если выбранный день +/- 5 дней от текущего дня - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть веб-сайт для отслеживания времени, где некоторые члены команды могут указывать время, которое они проводят ежедневно на разных задачах. Обычно они должны вводить время каждый день, поэтому они должны иметь доступ только к текущему дню.

Но на всякий случай, когда они забывают ввести время в некоторых случаях, я также создал календарь DatePicker, где они могут выбрать другую дату, отличную от текущего дня, чтобы они могли вернуться во времени или в будущем, чтобы добавить время, проведенное в день, отличный от текущего дня.

Я хотел бы ограничить это только 5 днями до текущего дня и 5 днями после.

Таким образом, в форме ниже пользователь может выбрать дату, отличную от текущей. Я хотел бы проверить, если это +/- 5 дней от текущего дня, затем перейдите на страницу, где они могут ввести время, и если это больше, чем +/- 5 дней, то отобразить сообщение об ошибке.

    <tr>
        <td>
            <div>Calendar:</div> 
        </td>
        <td>
            <form action = "enterTimeDD.php" method = "post" id="calendarID">
                <input type='text' class='datepicker' id='currentDay' name='currentDay' autocomplete='off'>
                <input type='submit' value='Go to' id='greensubmit'>
            </form>
        </td>
    </tr>

Какой лучший способ добиться такого поведения?

Редактировать 1: На этой странице я нашел что-то, что могло бы быть в правильном направлении: Источник

Я изменил код следующим образом:

            <script>
                const calendarID = document.getElementById('calendarID');
                const currentDay = document.getElementById('currentDay');
                const greensubmit = document.getElementById('greensubmit');

                var minDate=new Date(), maxDate = new Date();

                minDate.setDate(minDate.getDate()-5); 
                maxDate.setDate(maxDate.getDate()+5);

                if (currentDay > minDate && currentDay < maxDate ){
                    greensubmit.disabled = false;
                }
                else{
                    greensubmit.disabled = true;
                }

                greensubmit.addEventListener('click', function (event) {
                    calendarID.submit();
                });

            </script>

Но теперь кнопка отправки не работает, даже если дата находится в диапазоне +/- 5 дней. Есть предложения?

Редактировать 2: Я попытался жестко запрограммировать дату, чтобы проверить, работает ли код.

Сравнение var testDate = new Date("2018-11-01"); с minDate и maxDate Я не могу изменить ни на одну дату. И это правильно, поскольку дата находится за пределами диапазона +/- 5.

Сравнение var testDate = new Date("2018-11-08"); с minDate и maxDate Я могу изменить на любую дату. И это правильно, так как дата находится в диапазоне +/- 5.

Итак, кусок кода из Edit 1 работает.

Проблема, которую я вижу, состоит в том, что const currentDay = document.getElementById('currentDay'); не получает дату, которую я выбираю с помощью указателя даты, чтобы сравнить ее с minDate и maxDate. И я не понимаю почему. Я застрял в этой точке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...