JSFiddle - React, Tailwind, and code Playground
HTML
<form>
<div class="error"></div>
<div>Введите дату рождения: </div>
<input type="date" class="form-date form-birthday">
<div>Введите срок окончания действия паспорта: </div>
<input type="date" class="form-date form-passport">
<button type='submit'>click</button>
</form>
CSS
.input-error {
border: 1px solid red;
}
.error {
color: red;
}
JavaScript
const form = document.querySelector('form')
const formDate = document.querySelectorAll('.form-date')
const currentYear = new Date().getFullYear();
const emptyHandler = (el, err) => {
if (el.value == null || el.value === "") {
el.classList.add("input-error");
err.innerText = "Введите дату";
} else {
el.classList.remove("input-error");
if(err.innerText === "Введите дату") {
err.innerText = "";
}
}
}
const passHandler = (el, err) => {
console.log('pass')
const dateValue = el.value.split("-");
const enteredDate = parseInt(dateValue[0].split(" "));
if (enteredDate > currentYear + 10) {
el.classList.add("input-error");
err.innerText = "Введите актуальную дату срока окончания действия паспорта";
} else if (enteredDate < 1930) {
el.classList.add("input-error");
err.innerText = "Введите дату не раньше 1930 года";
}
}
const birthHandler = (el, err) => {
console.log('birth')
const dateValue = el.value.split("-");
const enteredDate = parseInt(dateValue[0].split(" "));
if (enteredDate > currentYear) {
console.error('year', enteredDate > currentYear, enteredDate, currentYear)
el.classList.add("input-error");
err.innerText = "Введите дату не превышающую текущую";
} else if (enteredDate < 1930) {
el.classList.add("input-error");
err.innerText = "Введите дату не раньше 1930 года";
}
}
const submitHandler = (e) => {
e.preventDefault()
const errBox = e.target.querySelector('.error');
e.target.querySelectorAll('.form-date').forEach(el => {
emptyHandler(el, errBox);
if(el.className.includes('form-passport')) {
passHandler(el, errBox);
}
if(el.className.includes('form-birthday')) {
birthHandler(el, errBox);
}
});
}
form.addEventListener('submit', submitHandler)