4
respostas

Validaçao da data de nascimento.

Procurei uma resposta no fórum que Satisfizesse a questão, porém apesar de muitos terem perguntado, não vi conclusão o do porque o códido não valida o formulário?

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 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
}
# 
4 respostas

Erro encotrado:

return dataMais18 <- dataAtual

mudar para:

return (dataMais18 <- dataAtual)

Pra mim não ajudou não. Minha data de nascimento segue sem validação

eu imprimir os valores, e tá tudo certo, o problema no meu é no setCustomValidity , que não funciona. Inclusive o máximo e mínimo da senha também não funcionavam.

Achei a solução, precisa inserir o reportValidity após o set. Agora o meu aparece a mensagem.

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