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

Formulário não quer submeter ao validar que a idade é permitida (maior que 18 anos)

Olá, pessoal!

O meu código está validando corretamente quando a idade é menor que 18 anos. Porém, quando você preenche com uma idade maior que 18, ao invés de você ser redirecionado para a página que diz que que o cadastro foi realizado, você é redirecionado para o input de data. Não sei se é um erro do meu código:

export function valida (input) {
    const tipoDoInput = input.dataset.tipo

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

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

function validacaoDataDeNascimento(input) {
    const dataRecebida = new Date(input.value);
    let mensagemDeAviso = " ";

    if(!idadeMaiorDeDezoito(dataRecebida)){
        mensagemDeAviso = "Você não pode se cadastrar, pois é menor de 18 anos";
    }

    input.setCustomValidity(mensagemDeAviso);
}

function idadeMaiorDeDezoito(data){
    const dataAtual = new Date();
    const dataDaIdadePermitida = new Date(data.getUTCFullYear() + 18, data.getUTCMonth(), data.getUTCDate());

    return dataDaIdadePermitida <= dataAtual
}

Arquivo app.js:

import { valida } from './validacaoDataDeNascimento.js';

const inputs = document.querySelectorAll('input');

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

Seu código está correto, a única coisa que poderia estar dando erro é se caso esse seu import não esteja importando o documento certo, o no caso o nome do documento criado na aula seria : validacao.js

import { valida } from "./validacao.js";

e não,

import { valida } from './validacaoDataDeNascimento.js';

mas se o que você criou foi o validacaoDataDeNascimento.js estaria tudo correto mesmo.

Boa noite, Otavio! Então, o arquivo que eu criei tem esse nome mesmo: validacaoDataDeNascimento.js

solução!

Boa, noite Raphaela! Então, eu copiei o seu código e testei aqui e acho que descobri o que foi, porem eu não sei o porque gerou esse erro, mas o erro está na mensagem de aviso

    let mensagemDeAviso =  "  ";

na declaração da variável você atribuiu um espaço vazio (de um espaço) dentro das aspas, eu retirei esse espaço e funcionou normalmente.

como disse, não sei o porque de dar esse erro, mas pelo menos voltou a funcionar.

Se alguém depois puder explicar o motivo disso, eu gostaria de saber também kkk

Boa tarde, Otavio! Realmente, tirei o espaço da variável e funcionou! Muito obrigada pela ajuda!

Sobre o motivo desse espaço dar esse erro, não sei ao certo, mas acredito que esteja relacionado ao fato de que o espaço não representa em si uma string vazia, uma vez que há algo nessa, o próprio espaço. Nisso ele deve retornar ao input com esse espaço bem na data... Não sei se é isso, mas...

Enfim, muito obrigada, Otavio!