1
resposta

Mais um problema de validação

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.

1 resposta

Olá André, tudo bem?

Peço desculpas pela demora em obter um retorno! Observei que você já concluiu o curso de "JavaScript na Web: validação de Formulários e HTML5" ,gostaria de saber se o problema que você mencionou foi resolvido durante esse tempo. Caso ainda esteja com dificuldades, peço que o link do seu projeto no GitHub ou um drive com todos os arquivos utilizados no projeto, para que eu possa simular o seu problema e te ajudar de forma mais assertiva.

Sucesso

Um grande abraço e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!