для начала Я вижу, что вы используете input type=text
, но говорите о input type=date
.
Так что если вы хотите использовать input type=date
, измените это:
<input type="text" id="dateOfBirth" name="dateOfBirth" onfocus="(this.type='date')" onblur="dateOfBirthValdiate()" placeholder="<?php echo date('Y-m-d'); ?>" max="9999-12-31" min="1800-01-01" />
на:
<input type="date" id="dateOfBirth" name="dateOfBirth" onfocus="(this.type='date')" onblur="dateOfBirthValdiate()" placeholder="<?php echo date('Y-m-d'); ?>" max="9999-12-31" min="1800-01-01" />
И вам не нужно проверять, правильно ли отформатирована дата.
Если вы хотите использовать input text
, то здесь я создал функцию для проверки правильности заполнения и заполнения данных:
HTML:
<form class="" action="index.html" method="post" id="form">
<input type="date" name="" value="" id="date">
<input type="text" name="" value="" id="dateText">
<input type="submit" name="" value="">
</form>
JS:
function isDate(date) {
return (new Date(date) !== "Invalid Date") && !isNaN(new Date(date));
}
document.getElementById('form').addEventListener("submit", e => {
e.preventDefault();
var date = document.getElementById('date');
var dateText = document.getElementById('dateText');
console.log("Date : " + date.value);
console.log("dateText : " + dateText.value);
if (date.value == "" || dateText.value == "") {
console.log("* is required");
e.preventDefault();
} else {
console.log("Dates filled.");
}
if (isDate(dateText.value) && !dateText.value.match("/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/")) {
console.log("* invalid date, required format yyyy-mm-dd");
e.preventDefault();
} else {
console.log("Correct Date");
}
})
Если вы хотите больше, чем , посмотрите здесь и выберите ваше любимое решение.