Olá Renan, tudo bem?
Vamos lá, existem alguns erros de digitação que ocasionou esse comportamente em seu código:
- Vamos primeiro no principal no arquivo:
validar.js
Acredito que esse é o mais chato que é não tirar a div, isso ocorreu porque você não estava selecionando o elemento correto, então ele sempre criava uma nova:
Você colocou:
const elementoErroExiste = elementoPai.querySelector(`${classeElementoErro}`);
Quando na verdade precisamos passar também o tipo do seletor, em nosso caso era uma div então se torna necessário utilizar o .
, por conta disso a função nunca encontrava
A maneira correta é:
const elementoErroExiste = elementoPai.querySelector(`.${classeElementoErro}`);
- O segundo erro está relacionado com a validação no arquivo
mensagensErro.js
Nesse caso precisamos trabalhar com o nome idêntico ao utilizado pelo validity
caso contrário a validação não irá funcionar corretamente, o seu código só funcionava com o valueMissing
, ainda que o email estivesse incorreto, para corrigir isso precisamos trocar onde você digitou typeMisMatch
para typeMismatch
O seu código:
const tiposDeErro = ['valueMissing', 'typeMisMatch', 'tooShort', 'rangeUnderflow', 'customError'];
const mensagensDeErro = {
email: {
valueMissing: 'O email é necessário',
typeMisMatch: 'Este email não é válido'
},
Maneira Correta:
const tiposDeErro = ['valueMissing', 'typeMismatch', 'tooShort', 'rangeUnderflow', 'customError'];
const mensagensDeErro = {
email: {
valueMissing: 'O email é necessário',
typeMismatch: 'Este email não é válido'
},
Após corrigir isso o seu projeto deve estar funcionando corretamente :)
Abraços e Bons Estudos!