1
resposta

Erro - Formulário enviado mesmo menor de 18 anos

Olá, fiz o passo a passo certinho (acredito eu) e o formulário segue finalizando mesmo menor de idade.

Inseri no final do HTML

<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
}
1 resposta

Oi Lucca, percebi um pequeno erro de sintaxe, falta abrir e fechar as chaves do if, na função validaDataNascimento. Tenta isto e vê se resolve teu problema. Um abraço.

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

}