Не удается установить максимальную дату при вводе даты

#javascript #html

Вопрос:

Я пытаюсь установить минимальную и максимальную дату для своих входных данных даты, настройка min работает, но по какой-то причине максимальная дата не работает. В чем здесь проблема? Я также пытался использовать getDate() 90 вместо getMonth() 3.

мои вклады:

 let today = new Date().toISOString().split('T')[0]; let date3m = new Date(new Date().setDate(new Date().getMonth()   3)); document.getElementsByName("start")[0].setAttribute('min', today); document.getElementsByName("start")[0].setAttribute('max', date3m) 
 lt;div class="calendar"gt;  lt;divgt;  lt;label for="start"gt;Start Dato:lt;/labelgt;  lt;input type="date" id="start" name="start" requiredgt;  lt;/divgt;  lt;divgt;  lt;label for="end"gt;Slutt Dato:lt;/labelgt;  lt;input type="date" id="end" name="end" requiredgt;  lt;/divgt;  lt;/divgt; 

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

1. Какое отношение к этому имеет jQuery? Вы используете стандартные функции DOM.

Ответ №1:

min и max должны быть в формате YYYY-MM-DD . Вы настраиваетесь max на что-то вроде Sat Nov 13 2021 18:14:51 GMT-0500 (Eastern Standard Time) , что не работает.

Используйте toISOString() так же, как вы это делаете для today .

И setDate() так и должно быть setMonth() .

 let today = new Date().toISOString().split('T')[0]; let date3m = new Date(); date3m.setMonth(date3m.getMonth()   3); date3m = date3m.toISOString().split('T')[0]; document.getElementsByName("start")[0].setAttribute('min', today); document.getElementsByName("start")[0].setAttribute('max', date3m) 
 lt;div class="calendar"gt;  lt;divgt;  lt;label for="start"gt;Start Dato:lt;/labelgt;  lt;input type="date" id="start" name="start" requiredgt;  lt;/divgt;  lt;divgt;  lt;label for="end"gt;Slutt Dato:lt;/labelgt;  lt;input type="date" id="end" name="end" requiredgt;  lt;/divgt;  lt;/divgt; 

Ответ №2:

Вы забыли удалить время из date3m , прежде чем установить max для него атрибут ввода.

 let today = new Date().toISOString().split('T')[0]; let date3m = new Date(new Date().setDate(new Date().getMonth()   3)).toISOString().split('T')[0];  document.getElementsByName("start")[0].setAttribute('min', today); document.getElementsByName("start")[0].setAttribute('max', date3m) 
 lt;script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"gt; lt;/scriptgt; lt;div class="calendar"gt;  lt;divgt;  lt;label for="start"gt;Start Dato:lt;/labelgt;  lt;input type="date" id="start" name="start" requiredgt;  lt;/divgt;  lt;divgt;  lt;label for="end"gt;Slutt Dato:lt;/labelgt;  lt;input type="date" id="end" name="end" requiredgt;  lt;/divgt;  lt;/divgt; 

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

1. @Barmar Спасибо за уведомление. Я обновил свой ответ.

2. setDate должно быть setMonth