Ajax + Combo + JSTL

3 respostas
J

Dae galera.. olha só.. eu tenho 3 combos, país, estado e cidade, quando seleciono o país eu carrego a combo de estado e assim em diante...
Até aí tudo bem.. Estou utilizando a biblioteca prototype e no evento onChange faço a chamada do meu Servlet que me retorna a lista de estados e cidades..., o problema é quando eu vou alterar esse formulário.... por exemplo... quando mandei alterar, o país selecionado veio o Brasil, então ele teria que vir já com a combo de cidades preenchidas e com o estado especifico, só que isso não ocorre... ele seleciona o Brasil e não recarrega a combo de estados e nem cidades....
Alguém tem alguma idéia de como fazer isso??

Segue o meu código>

Combo do Jsp

<tr>
            <td class="lbCampo"><div align="right">País</div></td>
            <td><select name=boxPais onChange="atualizaDivBox('montaBoxEstado','boxEstado','ServDocumentoController','command=listaEstado&pPais='+this.value,'get'); atualizaDivBox ('montaBoxCidade','boxCidade','ServDocumentoController','command=listaCidade','get');"> 
                <option value="">Selecione...</option>
                <c:forEach var="pais" items="${listaPais}">                    
                    <c:if test="${pais.codPais == param.boxPais}">  
                        <option value="${pais.codPais}" selected>${pais.nomePais}</option> 
                    </c:if>  
                    <c:if test="${pais.codPais != param.boxPais}">  
                        <option value="${pais.codPais}">${pais.nomePais}</option> 
                    </c:if>                                                                                                                        
                </c:forEach>                
                </select>
            </td>
          </tr>          
          
          <tr>
            <td class="lbCampo"><div align="right">Estado</div></td>
            <td><div id="montaBoxEstado">
                <select name=boxEstado id="boxEstado" onChange="atualizaDivBox('montaBoxCidade','boxCidade','ServDocumentoController','command=listaCidade&pEstado='+this.value,'get');"> 
                <option value="">Selecione...</option>
                <c:forEach var="estado" items="${listaEstado}">                    
                    <option value="${estado.codEstado}">${estado.nomeEstado}</option> 
                </c:forEach> 
                </select>
                </div>
            </td>
          </tr>

Função JavaScript que é chamada no onChange

function atualizaDivBox(divA,box, url, pars, metodo){ 
    $(box).options.add( new Option("Carregando...",0));
    $(box).remove(0);
    if(metodo=='') metodo = metodo;
    var meuAjax = new Ajax.Updater(divA, url, 
                               {method: metodo, 
                                parameters: pars});                                
     }

Todos os valores dos meus combos são carregados através do Servlet que me retorna a lista e atualizo a div para os valores...

3 Respostas

JohnTortugo

Olá.

Se você “selecionar” alguns dos itens do combo no momento em que estiver o construindo… isso não caracteriza um evento onchange… Desse modo quando for para editar… você tera que chamar a função que carrega as cidades passando o país que já esta gravado no DB… e assim por diante…

Att. JOhn.

J

Cara valeu mesmo… era bem isso…
Abraço e fica com Deus!!

L

Tem como me passar o codigo desses combos???

Vc usou algum framework pro ajax???

preciso mesmo dessa ajuda pro tcc. Valeu…

Criado 5 de setembro de 2007
Ultima resposta 22 de set. de 2008
Respostas 3
Participantes 3