Parece que esse problema está acontecendo com todos e até agora nenhuma solução definitiva. Meu código está assim: HTML
<input name="nascimento" id="nascimento" class="input" type="date" placeholder="Data de nascimento" required>
<script src="./js/validacao.js"></script>
JS
const dataNascimento = document.querySelector("#nascimento");
dataNascimento.addEventListener("blur", (evento) => {
validaDataNascimento(evento.target)
})
function validaDataNascimento(input) {
const dataRecebida = new Date(input.value)
let mensagem = " "
if(!maiorQue18(dataRecebida)) {
mensagem = "Você deve ser maior que 18 anos para se cadastrar."
}
input.setCustomValidity(mensagem)
}
function maiorQue18(data) {
const dataAtual = new Date()
const dataMais18 = new Date(
data.getUTCFullYear() + 18,
data.getUTCMonth(),
data.getUTCDate()
)
return dataMais18 <= dataAtual
}
E o negócio fica doido quando as vezes ele cadastra menor de idade, depois não cadastra mais ninguém e mostra o erro, depois fica com o Dia da data selecionado (em azul) ao invés de ir para a pagina de cadastro ou mostrar mensagem de erro.