5
respostas

Alert em uma função javascript

Bom dia agradeceria ajuda para entender um comportamento que não deveria estar ocorrendo. Quando a função validarSenha é acionada, em caso de senhas diferentes o alert é disparado, ok. Mas ao clicar no ok do alert ele encaminha para a pagina login.php, o qual deveria somente ser acionada se a função for validada.


  <script>
function validarSenha(){
   SuaSenha = document.getElementById('SuaSenha').value;
   CSuaSenha = document.getElementById('CSuaSenha').value;
   if (SuaSenha  !== CSuaSenha) {
    alert("SENHAS DIFERENTES!\nFAVOR DIGITAR SENHAS IGUAIS"); 
   }else{
      document.FormSenha.submit();
   }
}
        </script>

</head>
<body>

<main class="container">

  <?php if(isset($_GET["login"]) && $_GET["login"]==false){?>
    <center><div class="alert alert-danger"  role="alert">
                    <div class="container">

                        <div class="alert-icon">
                            <i class="now-ui-icons travel_info"></i>
                        </div>

                        <strong>Usuário e/ou Senha Inválidos</strong>
                        <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                            <span aria-hidden="true">
                                <i class="now-ui-icons ui-1_simple-remove"></i>
                            </span>
                        </button>
                    </div>
                </div></center>
<?php }?>  

  <div class="row">
    <div class="col-md-6">
   <h4> &nbsp&nbsp Login para iniciar</h4>

      <!-- formulario de login -->
   <form action="php/login.php" method="post">
        <div class="form-group col-md-8">
          <input class="form-control"  type="text" name="login" placeholder="E-mail" required>
        </div>

        <div class="form-group col-md-8">
          <input class="form-control" type="password" name="senha" placeholder="Senha" required>
        </div>

        <div class="form-group col-md-8">
          <input type="submit"  style="float: right;" class="btn btn-primary"  value="Entrar">
        </div>
      </form>

    </div>

    <!-- fim do formulário de login -->

     <!-- inicio do formulario de registro -->


    <div class="col-md-6" id="FormSenha">
    <h4> &nbsp&nbsp Ainda não tem uma conta?<br>
    &nbsp&nbsp Registre-se! É Gratuíto!</h4>

    <form action="adiciona-primeiroperfil.php"  method="post" >

      <div class="form-group col-md-8">
          <input name="nome" class="form-control" type="text" placeholder="Nome Completo" >
        </div>

        <div class="form-group col-md-8">
          <input type="email" name="email" class="form-control"   placeholder="E-mail" required>
        </div>

        <div class="form-group col-md-8">
          <input type="password" name="senha" class="form-control"  id="SuaSenha"  placeholder="Senha" required>
        </div>

        <div class="form-group col-md-8">
          <input type="password" name="confirma" class="form-control"   id="CSuaSenha" placeholder="Confirmar Senha" required>
        </div>


        <div class="form-group col-md-8" >
          <input type="submit" style="float: right;" class="btn btn-success" onClick="validarSenha()" value="Registrar">
        </div>

      <!-- ./register form -->
      </form>
    </div>

  </div>

</main>
<!-- ./main -->
</body>
5 respostas

Fala ai Sergio, tudo bem? Acredito que o problema está na lógico e fluxo que montou.

Você criou um botão do tipo submit e passa uma função no onClick dele, porém, depois ele chamar e executar a função definida no onClick ele vai submeter o form.

Uma solução é você trocar o submit para button:

<button type="button" style="float: right;" class="btn btn-success" onClick="validarSenha()">Registrar</button>

Agora é apenas um botão, ele não irá submeter o form após ser clicado.

Espero ter ajudado.

Oi Matheus, tudo bom? Ao trocar o type para "button" o problema fica invertido, ele não envia se as senhas NÃO conferem o que está ok (ele mostra o alert e quando clico no ok ele volta para a tela o que é esperado), mas também não valida se as senhas conferem (não envia para o adiciona-primeiroperfil.php) os dados, o que antes acontecia. Acho que o else não estão funcionando corretamente. Você poderia me ajudar a resolver isso?

obrigado

Para fazer esse envio você pode estar utilizando um AJAX por exemplo.

Lembrando que tem várias maneiras de resolver o problema, essa é uma delas.

Espero ter ajudado.

obrigado

Magina, sempre que precisar não deixe de criar suas dúvidas.

Caso tenha sido resolvida, não esqueça de marcá-la como solucionada, assim, podemos ajudar outros alunos com problemas parecidos ou iguais.

Abraços e bons estudos.