Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
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?
achei um pouco estranha a sua implementação.
explique oq você quer fazer.