Ir para conteúdo

POWERED BY:

Arquivado

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

FernandoPhP

Aguardar resposta evento trigger para continuar script Jquery

Recommended Posts

Eu tenho esse script:

 

$("#anuncios input[name=email]").live('blur',function() {
     var tokening = $("#procuraform  input[name=token]").val();
     $.post('carregacidades.php',{email:$(this).val(), token:tokening}, function(registro){
       var items = [];
       var campos = new Array('select','select','select','input','input','input','input','input','input','select','input','input','input');
       var i = 0;
       $.each(registro, function(key, value) {
         if(key != 'email'){
           items.push( $("#anuncios "+campos[i]+"[name="+key+"]").val(value));
           if(campos[i] == 'select'){
             $("#anuncios "+campos[i]+"[name="+key+"]").trigger('change');
           }
           i++;
         }
       });
       }, "json")
     });

 

o problema é que o $.each não aguarda a resposta do evento que disparo com o trigger para continuar o loop.

 

Alguém tem alguma idéia do que posso fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

achei um pouco estranha a sua implementação.

 

explique oq você quer fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu tenho um formulário que tem todos os campos com os tipos que estão definidos em var campos

 

o arquivo carregacidades.php retorna para página os campos cadastrados no banco de dados usando como chave o email passado e o token recebe um valor diferente a cada página só para validação. Até ai tudo bem.

 

Então o post retorna um json com esses valores e eu uso o $.each para percorrer registro e alimentar os campos do formmulário. Pode perceber que tem um if para pular o email visto que foi o próprio cliente que digitou, não precisa ser alterado. Até ai está tudo funcionando.

 

só que eu tenho outros eventos para dois campos:

 

  $("#anuncios select[name=estados]").live('change',function() {
   if($(this).val() == '0'){
     $("#anuncios select[name=cidades], #anuncios select[name=bairros]").css('display','none');
     $("#anuncios select[name=cidades], #anuncios select[name=bairros]").val('0');
   }else{
     $("#anuncios select[name=cidades]").css('display','inline');
     $("#anuncios select[name=cidades]").html('<option value="0">Carregando...</option>');
     var tokening = $("#procuraform  input[name=token]").val();
     $.post("carregacidades.php", {id:$(this).val(),campo:'cidades', token:tokening}, function(valor){
       $("#anuncios select[name=bairros]").html('<option value="0">Selecione a Cidade...</option>');
       $("#anuncios select[name=cidades]").html(valor);
     })
   }
 });
 $("#anuncios select[name=cidades]").live('change',function() {
   if($(this).val() == '0'){
     $("#anuncios select[name=bairros]").css('display','none');
     $("#anuncios select[name=bairros]").val('0');
   }else{
     $("#anuncios select[name=bairros]").css('display','inline');
     $("#anuncios select[name=bairros]").html('<option value="0">Carregando...</option>');
     var tokening = $("#procuraform  input[name=token]").val();
     $.post("carregacidades.php", {id:$(this).val(),campo:'bairros', token:tokening, outro:1}, function(valor){
       $("#anuncios select[name=bairros]").html(valor);
     })

 

o que eu quero é que ao alterar o estados, que está na frente de cidades e de bairros, execute o $("#anuncios select[name=estados]").live('change',function() {, que já está executando, mas que espere o resultado do evendo para pular para o próximo loop, dessa forma quando pular para o próximo loop, a lista já vai estar preenchida e o valor setado para a cidades estará disponível na lista. Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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