Combo Dinâmico

4 respostas
M

Olá!

Tenho uma página JSP (visão - formulário) que possui 2 combos. Estou precisando popular o segundo combo que tem como parâmetro o primeiro.

Quando escolho uma opção no primeiro combo o segundo é preenchido. Por exemplo, ao escolher o primeiro combo “Estado” o segundo combo “Cidade” seja preenchido com as Cidades daquele Estado. Porém, os estados e as cidades estão armazenadas no Banco de Dados. Ou seja, quando escolher o estado RJ ele deve ir no Banco e buscar as cidades cadastradas do estado RJ.

O segundo combo somente será preenchido quando for selecionado o primeiro combo.

Como criar este esquema?

Obrigado.

4 Respostas

M

Bem,

Já fiz algo como isto aí. Você pode criar o primeiro combox que tenha a propriedade onChange que submete o formulário para o mesma página e o segundo combox é exibido como desabilitado quando o parâmetro do primeiro for nulo e quando for diferente de nulo executa uma função. Só uma coisa não se esqueça de ler todos os dados do formulário novamente, senão o cliente vai perder os dados.

<select name="estado" onChange="atualizaFormulario();">
      options
</select>
<select name="estado" <c:if test="${empty param.estado}">disabled</c:if>>
      crie aqui um mecanismo de seleção.
</select>
										
função javascript
function atualizaFormulario()
{
	form.action = "SuaPagina.jsp";
	form.submit();
}

espero ter ajudado.

:okok:

G
"MPSV":
Olá!

Tenho uma página JSP (visão - formulário) que possui 2 combos. Estou precisando popular o segundo combo que tem como parâmetro o primeiro.

Quando escolho uma opção no primeiro combo o segundo é preenchido. Por exemplo, ao escolher o primeiro combo "Estado" o segundo combo "Cidade" seja preenchido com as Cidades daquele Estado. Porém, os estados e as cidades estão armazenadas no Banco de Dados. Ou seja, quando escolher o estado RJ ele deve ir no Banco e buscar as cidades cadastradas do estado RJ.

O segundo combo somente será preenchido quando for selecionado o primeiro combo.

Como criar este esquema?

Obrigado.

Crie um função que realizará um Submit na própria página passando o estado:

function Reload(){
  var uf = document.form1.estado.value;

   form.action = "pagina.jsp?estado="+uf;
   form.submit(); 
}

Essa função será chamada no OnChange do objeto select...

<select OnChange="Reload()">

A partir daí você já tem o estado que o usuário escolheu, então é so realizar a consulta em cima deste dado:

select * from cidades where uf = 55

ok ?

:wink:

M

Pessoal já agradeço pelas respostas dos nobres amigos.

Duas perguntas (?):

  1. O formulário já está dando um Reload() no Onchange do combo 1 (estado), ou seja, chamando ele mesmo. Porém, estou trabalhando com sessão e toda URL tenho que reescrever com o response.encodeURL. Este response.encodeURL não funciona no JavaScript. Como eu posso reencrever a URL passando o número da sessão???

  2. Não consegui colocar o 2º combo desabilitado. O código abaixo está correto??

<select name=“estado” <c:if test="${empty.param.estado}">disabled></c:if>>

<option> </option>

<option> </option>

</select>
M

Bem,

você pode colocar na action:

function atualizaFormulario&#40;&#41; &#123; form.action = &quot;SuaPagina.jsp?idSession=&lt;%=recupereAquiIdDaSessao%&gt;&quot;; form.submit&#40;&#41;; &#125;

e a segunda você fez coisa errada, e também para usar isto tens que estar utilizando jstl, caso queira dar uma olhada aqui no pj tem um tutorial e o código é o seguinte:

&lt;c&#58;if test="$&#123;empty param.estado&#125;"&gt;disabled&lt;/c&#58;if&gt;

e não empty.param.estado.

Ok!?

:okok:

Criado 26 de junho de 2005
Ultima resposta 30 de jun. de 2005
Respostas 4
Participantes 3