Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Junior Varoni

função não reconhece variavel

Recommended Posts

Boa tarde, estou desenvolvendo um script em jquery para validar um input...
O script primeiramente verifica se o campo está vazio, se sim, exibe uma mensagem de erro.
Depois verifica se o valor do campo não consta no banco.

Depois de aplicado o efeito de borda, o usuario enxerga o erro e corrige.

Gostaria que depois que corrigisse, a borda fosse retirada. Acontece exatamente isso quando o erro é pelo campo estár vazio, mas quando o erro é por causa de valor duplicado no banco, a mensagem aparece e logo some.
Acredito que o ajax não esteja enxergando a variável para trocar o valor.

No caso a var vrf

$(document).ready(function(){
    var user = $("#inpt1");
    $("input").blur(function(){
        var vrf = true;
        if($(this).val() == "")
        {
            var msg = $(this).attr('data-txt');
            $(this).css({"border-bottom" : "1px solid #F00", "padding": "2px"});
            $(this).next().css({"color" : "#f02"}).text(msg);
            vrf = false;
        }
        else{
            $.ajax({
                url: 'verifica.php',
                type: 'POST',
                data: {'inpt1': user.val()},
                   dataType: 'json',
                   success: function(data) {
                       console.log(data);
                       if (data) {
                           user.css({"border-bottom" : "1px solid #F00"});
                           user.next().css({"color" : "#f02"}).text('Já há um login cadastrado com esse nome');
                           vrf = false;
                       }

                   }
            })
        }
        if (vrf){
            $(this).css({"border-bottom" : "none"}).next().show().fadeOut(4000);
        }

    });

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Jr,

 

Cara troque isso:

 

user.css({"border-bottom" : "1px solid #F00"});

 

Por isso:

 

user.css("border-bottom", "1px solid #F00");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade eu acho que não expliquei claramente...

 

Faço a validação de campo vazio e a mensagem de erro se mantém abaixo do input, porém depois de inserir qualquer valor no campo e clicar fora no input , o erro gerado aparece e porém logo some.

 

O valor de vrf nessa linha deveria ser False mas aparentemente o ajax não está conseguindo retornar isso.

}
if (vrf){
$(this).css({"border-bottom" : "none"}).next().show().fadeOut(4000);
}

 

:mellow: :mellow: :mellow:

Compartilhar este post


Link para o post
Compartilhar em outros sites

A mensagem devolvida pela página verifica.php está a ser correctamente guardada na variável data?

 

Por outro lado, tal como disse o Sergio Tomas, podes retirar as chavetas do método .css(), pois elas só são necessárias quando queres alterar várias propriedades num só comando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia.

Meu verifica.php está retornando certinho e quanto ao meu .css agradeço a dica, pois não sabia disso.

 

Contudo andei pesquisando e vi que o meu problema é porque o javascript não espera o ajax da retorno para continuar rodando o script;

Então é por isso que achava que o ajax não retornava valor na variavel.

 

Agora preciso descobri uma maneira de parar o javascript enquanto o ajax não da o retorno, para ai sim conseguir fazer o que pretendo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Fala pessoal, tudo bem?
       
      Tô tentando fazer um pre-loading, mas não consigo de jeito algum.
      Quero mostrar uma animação enquanto a página é carregada e depois de caregada, esconder a animação e mostrar conteúdo.
       
      Aguém pode me ajudar?
       
      Segue código abaixo
       
       
      <!DOCTYPE html>
      <html lang="pt-br">
      <head>
          <meta charset="utf-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0" />  
          <title>PÁGINA LOAD</title>

      <style type="text/css">
      .loadclass {
          border: 2px solid #f3f3f3; /* Light grey */
          border-top: 4px solid #ffc401; /* Blue */
          border-radius: 50%;
          width: 50px;
          height: 50px;
          animation: spin 2s linear infinite;
      }
      @keyframes spin {
          0% { transform: rotate(0deg); }
          100% { transform: rotate(360deg); }
      }
      .conteudo {
          display:none;
      }
      </style>
      <script>
          function loading(){
              document.getElementsByClassName('loadclass')[0].style.display="none";
              document.getElementsByClassName('conteudo').style.display="block";
          }
      </script>
      </head>
      <body onLoad="loading()">
      <div class="loadclass"></div>
      <div class="conteudo">SEU CONTEUDO AQUI DENTRO!!!</div>
      </body>
      </html>
    • Por ILR master
      Pessoal, pergunta bem simples. Abaixo tenho o seguinte código:
       
      <script>
      function alerta()
      {
        if (window.confirm("Você realmente quer sair?")) {
          window.open("sair.html");
      }
      }
      </script>
       
      Funciona perfeitamente, só que está abrindo em outra janela e quero que abra na mesma janela.
       
      Alguém pode me ajudar?
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
    • Por Thiago Duarte
      Oi, gostaria de arrastar imagem e ao soltar formar bloco html, meu bloco de html ficaria com nome, content-1.html, content-2.html, etc
       
      Alguem pode me ajudar?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.