Атрибут pattern при вводе неправильной даты
Нужно выбор даты только за период до 31.12.2020. Т.е. с 01.01.2021 уже должно запрещать выполнять действие
<td><form:label path="dateBegin"><spring:message code="label.dateBegin" /></form:label>
<form:input id="dateBeginCountDetail_exp" path="dateBegin" class='reportParam' pattern="^[^2021]*$" title="Только до 31.12.2020"/></td>
$( "#dateBeginCountDetail_exp" ).datepicker({dateFormat:'dd.mm.yy'});
$('#dateBeginCountDetail_exp').attr('autocomplete','off');
Ответы (1 шт):
Автор решения: entithat
→ Ссылка
Будем использовать такое регулярное выражение:
^(?:3[01]|0[1-9]|[12][0-9]|)\.(?:0[1-9]|1[1-2])\.(?:[01][0-9]{3}|20([01][0-9]|20))$
(?:3[01]|0[1-9]|[12][0-9]|) отвечает за число, т.е. от 01 до 31.
(?:0[1-9]|1[1-2]) отвечает за месяц, т.е. от 01 до 12.
(?:[01][0-9]{3}|20([01][0-9]|20)) отвечает за любой год в формате YYYY, кроме 2021+.
P.S. Правда неучёл, что в некоторых месяцах может и не быть 31 дня (а в феврале и 29+)
document.querySelector('input').onchange = (e) => console.log(e.target.checkValidity());
<input pattern="^(?:3[01]|0[1-9]|[12][0-9]|)\.(?:0[1-9]|1[1-2])\.(?:[01][0-9]{3}|20([01][0-9]|20))$" placeholder='Press enter to check validity'>