1
resposta

[Bug] Meu projeto no JavaScript não fica igual/parecido com o do professor

Oi, estou com o mesmo problema que o da Clarissa Cunha De Lima , até baixei o projeto do capítulo 5 Conectando com a API ViaCEP , seção 1 e não está funcionando o enviado pelo professor, tentei no Chrome e no Brave e nada, deixa passar o CPF "0385425000" que está super errado. Aqui está o meu código: export function valida(input){ const tipoDeInput = input.dataset.tipo

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

if(input.validity.valid){
    input.parentElement.classList.remove('input-container--invalido')
    input.parentElement.querySelector('.input-mensagem-erro').innerHTML = ''
} else{
    input.parentElement.classList.add('input-container--invalido')
    input.parentElement.querySelector('.input-mensagem-erro').innerHTML = mostraMensagemDeErro(tipoDeInput, input)
}

}

const tiposDeErro = [ 'valueMissing', 'typeMismatch', 'patterMismatch', 'customError' ]

const mensagensDeErro = { nome:{ valueMissing: 'O campo nome não pode estar vazio.' }, email:{ valueMissing: 'O campo e-mail não pode estar vazio.', typeMismatch: 'O e-mail digitado não é válido.' }, senha:{ valueMissing: 'O campo senha não pode estar vazio', patterMismatch: 'A senha deve ter entre 6 a 12 caraceteres, pelo menos 1 letra maiúscula, uma minúscula e um 1 número, e não deve conter caracteres especiais.' }, dataNascimento:{ valueMissing: 'O campo de data de nascimento não pode estar vazio.', customError: 'Você deve ser maior que 18 anos para se cadastrar.' }, cpf: { valueMissing: 'O campo de CPF não pode estar vazio.', customError: 'O CPF digitado não é válido.' } }

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

function mostraMensagemDeErro(tipoDeInput, input){ let mensagem = '' tiposDeErro.forEach(erro => { if(input.validity[erro]){ mensagem = mensagensDeErro[tipoDeInput][erro] } }) return mensagem }

/* 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

} function validaCPF(input){ const cpfFormatado = input.value.replace(/\D/g,'') let mensagem = ''

if(!checaCPFRepetido(cpfFormatado) || !checaEstruturaCPF(cpfFormatado)){
    mensagem = 'O CPF digitado não é válido.'
}

input.setCustomValidity(mensagem)

} function checaCPFRepetido(cpf){ const valoresRepetidos = [ '00000000000', '11111111111', '22222222222', '33333333333', '44444444444', '55555555555', '66666666666', '77777777777', '88888888888', '99999999999' ] let cpfValido = true

valoresRepetidos.forEach(valor => {
    if(valor == cpf){
        cpfValido = false
    }
})

return cpfValido

} function checaEstruturaCPF(cpf){ const multiplicador = 10 return checaDigitoVerificador(cpf, multiplicador) }

function checaDigitoVerificador (cpf, multiplicador){ if(multiplicador >= 12){ return true } let multiplicadorInicial = multiplicador let soma = 0 const cpfSemDigitos = cpf.substr(0, multiplicador -1).split('') const digitoVerificador = cpf.charAt(multiplicador - 1) for(let contador = 0; multiplicadorInicial > 1; multiplicadorInicial--){ soma = soma + cpfSemDigitos[contador] * multiplicadorInicial contador++ } if(digitoVerificador == confirmaDigito(soma)){ return checaDigitoVerificador(cpf, multiplicador + 1) } return false }

function confirmaDigito(soma){ return 11 - (soma % 11) }

1 resposta

Oi Victor, estava com o mesmo problema e descobri que havia esquecido de deixar o servidor online. No meu caso, usei a extensão do próprio VisualStudio. Ligando o servidor online, o problema deve resolver. Avisa se conseguir. Abraço

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software