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
      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?
    • Por belann
      Olá!
       
      Estou fazendo o upload de arquivos com fetch dessa forma
      fetch(url, {
              method: 'POST',
              headers: {'Content-Type': 'multipart/form-data',},
              body: formData 
          }).catch((error) => (console.log("Problemas com o Upload"), error));
       
      estou usando input type=file
      e criando uma const formData = new FormData(); 
      mas não faz e não dá nenhum erro.
      estou fazendo o upload com a url="http://localhost/dashboard/dados".
×

Informação importante

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