Javascript: evento onchange não popula segunda combo

1 resposta
mrmgomes

Boa noite!

Tenho o seguinte javascript:

function updateSelectOptions(lookupUrl, parentSelectElementId, childSelectElementId) {
    var parentSelectRef = jQuery('#' + parentSelectElementId);
    var childSelectRef  = jQuery('#' + childSelectElementId);

    jQuery.getJSON(lookupUrl,
        {paisId: parentSelectRef.val()}, 
        function(data) {
            var html = '<option value="">Selecionar...</option>';
            var len = data.length;
            for (var i = 0; i< len; i++) {
                html += '<option value="' + data[i].id + '">' + data[i].descricao + '</option>';
            }

            childSelectRef.html(html);
        }
    );
}

que uso para aninhar as seguintes combos:

PaisId

<spring:bind path="paisId">
 <select id="paisId" onchange="updateSelectOptions('${lookupStatesUrl}', 'paisId', 'ufId')">
  <c:forEach items="${listaPaises}" var="pais">
   <option value="${pais.id}">${pais.descricao}</option>
  </c:forEach>
 </select>
</spring:bind>

UfId

<spring:bind path="ufId">
 <select id="ufId" onchange="updateSelectOptions('${lookupCitiesUrl}', 'ufId', 'cidadeId')">
  <c:forEach items="${listaUfs}" var="uf">
   <option value="${uf.id}">${uf.descricao}</option>
  </c:forEach>
 </select>
</spring:bind>

CidadeId

<spring:bind path="cidadeId">
 <select id="cidadeId">
  <c:forEach items="${listaCidades}" var="cidade">
   <option value="${cidade.id}">${cidade.descricao}</option>
  </c:forEach>
 </select>
</spring:bind>

Porque quando eu mudo a seleção na primeira combo, a segunda combo retorna vazia, somente com o valor , declarei na função no Javascript acima?

Tenho quase certeza de que o erro está na última linha da function:
for (var i = 0; i< len; i++) {
                html += '<option value="' + data[i].id + '">' + data[i].descricao + '</option>';
            }

Vocês podem me ajudar?

Agradeço desde já!

1 Resposta

leandroadacosta

Fica difícil tentar saber o erro se não temos como ver a dinamica - retorno do json ou erros de js no navegador - da aplicação rodando.

Recomendo você a abrir o Firefox com o plugin Firebug na aba Rede e analisar o retorno do seu JSON e ver o poque que não entra no loop do “for” do javascript.

Download do navegador:
http://br.mozdev.org/download/

Download do complemento:
https://addons.mozilla.org/pt-br/firefox/addon/1843/

Abraço!

Criado 22 de dezembro de 2010
Ultima resposta 26 de dez. de 2010
Respostas 1
Participantes 2