2
respostas

Validação não funciona

Fiz igual ao do instrutor,mas não funciona a validação da data de nascimento. E no console não mostra nenhum erro.

cadastro html

</main>
<script src="./js/app.js" type="module"></script>

validação.js export function valida(input) { const tipoDeInput = input.dataset.tipo

if(validadores[tipoDeInput]){
    validadores[tipoDeInput](input)
}

}

const validadores = { dataNascimento:input => validaDataNascimento(input) }

function validaDataNascimento(input){ const dataRecebida = new Date(input.value) let mensagem = ''

if(!maiorQue18(dataRecebida)){
mensagem = "Você deve der 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 <= dataAtua } app.js

import { valida} from './validacao.js'

const inputs = document.querySelectorAll('input')

inputs.forEach(input => { input.addEventListener('blur',(evento) => { valida(evento.target) }) })

Não coloquei todo o codigo do cadastro ,porque iria exceder a quantidade de digitos.

2 respostas

Erro encotrado:

return dataMais18 <- data atual

mudar para:

return (dataMais18 <- data atual)

Se o problema for na hora de aparecer a mensagem, eu consegui resolver inserindo o reportValidity após o set

input.setCustomValidity(mensagem);
input.reportValidity();