#java #html #date #thymeleaf
#java #HTML #Дата #thymeleaf
Вопрос:
У меня есть форма, которая принимает ввод даты. Я хочу проверить, что пользователь не выбирает будущую дату. Я знаю, что есть min и max, которые я могу поместить в html, но единственные примеры, которые я видел, дата жестко запрограммирована, поэтому я попытался использовать передачу значения currentDate в html, добавив его в модель
model.addAttribute("currentDate", LocalDate.now());
<input type="date" max="${currentDate}" data-th-max="${currentDate}" id="yearOfRegistration" name="yearOfRegistration"/>
<label class="error" th:errors="${initialRequestDTO.yearOfRegistration}"></label>
Я делаю, однако форма принимает будущие даты, а не так, как я предполагал. Есть предложения?
Ответ №1:
Вы можете сделать это с помощью Javascript, получив текущую дату в правильном формате и используя ее для установки max
значения введенной даты. Что-то вроде этого:
$(function() {
var currentDate = new Date();
var month = currentDate.getMonth() 1;
var day = currentDate.getDate();
var year = currentDate.getFullYear();
if (month < 10) {
month = '0' month.toString();
}
if (day < 10) {
day = '0' day.toString();
}
var maxDate = year '-' month '-' day;
$('#yearOfRegistration').attr('max', maxDate);
});
Комментарии:
1. спасибо, это отлично работает. У вас все еще есть ответ на вопрос, почему я не могу использовать дату, которую я получаю в своем Java-коде?
2. @kalina199 Может быть связано с тем, что ваш
currentDate
атрибут модели имеет типLocalDate
. Попробуйте преобразовать его в строку и вместо этого сохранить строку в модели.