Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Formulário valida menores de 18 anos

Fiz de acordo com o código da aula, mas o formulário valida qualquer data de nascimento que coloco.

const dataNascimento = document.querySelector('#nascimento')

dataNascimento.addEventListener('blue', (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.getUTCData())

    return dataMais18 <= dataAtual
}
4 respostas

Olá Matheus, tudo bem?

Na linha onde você está pegando a data + 18 anos

    const dataMais18 = new Date(data.getUTCFullYear() + 18, data.getUTCMonth(), data.getUTCData())

O ultimo parâmetro do construtor de Date está errado, deveria ser assim:

    const dataMais18 = new Date(data.getUTCFullYear() + 18, data.getUTCMonth(), data.getUTCDate())

No final fica data.getUTCDate()

Fiz a alteração, mas o problema continua

solução!

Tenta colocar um console.log nessa função maiorQue18

function maiorQue18(data) {
    console.log(data) // Aqui

    const dataAtual = new Date()
    const dataMais18 = new Date(data.getUTCFullYear() + 18, data.getUTCMonth(), data.getUTCDate())

    return dataMais18 <= dataAtual
}

Verifique se a data que está chegando nessa função é valida, se não for, o problema está aí

o nome do evento é "Blur" e nao "Blue"...

dataNascimento.addEventListener('blue', (evento) => { validaDataNascimento(evento.target)

tenta la, talvez de certo agora.