Tenho uma dúvida em relação a campo.setCustomValidity("");, que foi usada para limpar mensagens de erros, conforme abordado no treinamento. No entanto, ao remover esse setCustomValidity, o código continua funcionando da mesma forma. Isso ocorre porque a condição no final da função elimina a mensagem de erro se o campo for válido. Portanto, parece ser uma linha desnecessária adicionada pela instrutora, certo?
Segue a função completa:
function verificaCampo(campo) {
let exibicaoMensagem = "";
// Para limpar mensagens de erros
campo.setCustomValidity("");
if(campo.name == "cpf" && campo.value.length >= 11) {
ehCpf(campo);
}
if(campo.name == "aniversario" && campo.value != '') {
ehMaiorDeIdade(campo);
}
tiposDeErros.forEach(erro => {
if(campo.validity[erro]) { // Se algum erro está do nosso array de erros existe dentro do validity (que tem os mesmos nomes)
exibicaoMensagem = mensagensDeErro[campo.name][erro]; // Destrinchando até conseguir o erro respectivo do campo
// Para melhor entendimento do destrinchamento
console.log(mensagensDeErro) // Todas as chaves que possuem mensagens de erros
console.log(mensagensDeErro[campo.name]) // Todos os valores do parametroDaFunção.name (nome, ou email, etc) atendido, sendo eles, nomes e as mensagens dos erros
console.log(erro); // Nome do erro que passou na condição
console.log(exibicaoMensagem); // Mensagem de erro do respectivo campo que passou na condição
}
})
const mensagemErro = campo.parentNode.querySelector('.mensagem-erro'); // Para pegar o span do respectivo campo do parametro da nossa função
const validadorDeInput = campo.checkValidity(); // Checando se está valido
// Exibir o erro
if(!validadorDeInput) {
mensagemErro.textContent = exibicaoMensagem;
} else {
mensagemErro.textContent = "";
}
}