Olá, Talisson. Tudo bem?
Vamos resolver o problema que você relatou, analisando o comportamento da aplicação e ajustando os pontos críticos:
Problema com o retorno para a tela de login antes de preencher os dados:
Isso ocorre porque o código que controla a troca de telas (formulario para formulario2) está sendo executado mesmo quando as validações não passam. Isso acontece devido ao uso incorreto de uma atribuição (=)
no lugar de uma comparação (===)
no trecho:
if(validar2 = true)
Conflito no trecho de comparação das senhas:
O trecho abaixo está causando conflitos:
if (senha2 !== '' && confirmarSenha !== '' && confirmarSenha !== senha2) {
mensagemSenha2.innerHTML = 'Senhas não correspondentes.';
mensagemConfirmarSenha.innerHTML = 'Senhas não correspondentes.';
validar2 = false;
} else if (senha2 === confirmarSenha) {
mensagemSenha2.innerHTML = '';
mensagemConfirmarSenha.innerHTML = '';
}
O problema está na estrutura lógica do código, pois o else if
verifica apenas se as senhas são iguais, ignorando outras validações, como campos vazios. Isso pode causar o comportamento indesejado, pois se senha2
e confirmarSenha
forem vazios e iguais (por exemplo, ambas as strings sendo ''), o código irá limpar as mensagens de erro definidas para campos vazios.
Para evitar esse problema, a comparação entre as senhas deve ser feita apenas se ambos os campos estiverem preenchidos. Segue uma versão corrigida do trecho:
if (senha2 !== '' && confirmarSenha !== '') {
if (senha2 !== confirmarSenha) {
mensagemSenha2.innerHTML = 'Senhas não correspondentes.';
mensagemConfirmarSenha.innerHTML = 'Senhas não correspondentes.';
validar2 = false;
} else {
mensagemSenha2.innerHTML = '';
mensagemConfirmarSenha.innerHTML = '';
}
}
As mensagens de erro para campos vazios e senhas diferentes foram separadas, garantindo que mensagens específicas não sejam sobrescritas por engano. Assim a verificação de "senhas correspondentes" agora ocorre apenas se ambos os campos não estiverem vazios (senha2 !== '' && confirmarSenha !== '')
.
Espero ter ajudado!
Siga firme nos seus estudos e conte com o fórum sempre que precisar!
Abraços :)
Caso este post tenha lhe ajudado, por favor, marcar como solucionado