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

[Dúvida] O meu projeto está com 2 erros o botão enviar enviar não funciona, eu ate consigo apagar o "enviar" que tem nele

Bom dia, Estou com 2 erros no meu código, um é o botão enviar que não funciona, eu consigo apagar o "Enviar" que tem escrito nele e ele nao funciona, o outro é o cpf, que sempre que eu coloco um cpf ele aparece o erro "Por favor, preencha um CPF válido." Mesmo colocando um cpf correto, se puderem ajudar agradeço

a baixo ta o codigo no github : https://github.com/PedroPassos081/validando-formularios

2 respostas
solução!

Ola!

Ao analisar o código, parece que a lógica de validação do CPF está correta. No entanto, o problema pode estar relacionado à maneira como você está tratando a validação no evento blur do campo de CPF.

No seu código atual, você chama a função ehUmCPF no evento blur do campo de CPF sempre que ele tiver 11 caracteres. No entanto, a função ehUmCPF não retorna um valor verdadeiro ou falso para indicar se o CPF é válido. Em vez disso, ela configura a mensagem de erro personalizada usando campo.setCustomValidity('Esse cpf não é válido').

Para corrigir o problema, você pode modificar a função ehUmCPF para retornar true se o CPF for inválido e false se for válido. Em seguida, no evento blur, você pode verificar o resultado da função ehUmCPF e definir a mensagem de erro de acordo.

Aqui está uma versão modificada da função ehUmCPF:

export default function ehUmCPF(campo) {
  const cpf = campo.value.replace(/\.|-/g, "");
  if (validaNumerosRepetidos(cpf) || validaPrimeiroDigito(cpf) || validaSegundoDigito(cpf)) {
    return true; // CPF inválido
  } else {
    return false; // CPF válido
  }
}

E no evento blur, você pode atualizar a função verificaCampo para verificar o resultado da função ehUmCPF e definir a mensagem de erro adequadamente:

function verificaCampo(campo) {
  let mensagem = "";
  campo.setCustomValidity('');

  if (campo.name == "cpf" && campo.value.length >= 11) {
    const cpfValido = ehUmCPF(campo);
    if (cpfValido) {
      mensagem = mensagens[campo.name].customError;
      campo.setCustomValidity(mensagem);
    }
  }

  // Resto do código...
}

Dessa forma, a mensagem de erro será definida corretamente quando o CPF for inválido. Certifique-se de que o arquivo "valida-cpf.js" esteja sendo importado corretamente para o arquivo onde você está usando esse código.

olá estudante, eu testei e mesmo assim não funcionou, você poderia dar outra olhadinha ? eu adicionei os códigos que voce listou a cima e botei no github https://github.com/PedroPassos081/validando-formulariose. E muito obrigado pela resposta