1
resposta

Problema de autenticação de formulário.

Tenho um problema : Confira este projeto → https://github.com/Talisson-matos/FormularioNeonVerde.git; quando clica em cadastre-se e aparece a tela de cadastro, se vc apertar confirmar ela esta voltando para a tela de login antes de preencher todos os dados; além disso não quer aparecer as mensagens de senha e confirmar senha quando estas não são preenchidas; não sei se está criando conflito com um outro if else de comparação anterior.

1 resposta

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 !== '').

demonstrando o funcionamento do código corrigido

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