Atualizando Combobox sem refresh

6 respostas
D

Boa tarde, estou com problemas no preenchimento do meu segundo combo… onde inicialmente seleciono a empresa e após isso o segundo combo me retorna os fornecedores correspondentes a empresa selecionada…
Estou usando as funções abaixo, elas carregam o combo com a informação solicitada mas para isso dão um refresh na tela, ou seja se eu faço uma pesquisa e no resultado da pesquisa tento alterar a empresa, ele altera porém perco os dados que estavam nos demais campos…
Como faço para atualizar apenas o combo sem perder as informações anteriores? (Sem ajax)

Grata

function getSelectedValue(Campo){
		 	Icombo = Campo.selectedIndex
		 	var string = Campo.options[Icombo].value
		 	return string
		}
		
		/*Funcao que para preencher o combo */
		function preenche_combo(who, where){
			document.forms[0][where].value = getSelectedValue(who); 
			document.forms[0].action="cds_ent.jsp";
			document.forms[0].method="POST";
		        document.forms[0].submit();
					}

6 Respostas

A

ai matou!! tenho pouco experiência nesse ambiente de JavaScript, Ajax e CIA. mas sem Ajax acho que isso é impossível!

G

A única linguagem que roda nesse nível é o javascript. você poderia pegar os valores e via javascript ir preenchendo o seu combo.

porém para isso seria preciso que vc tenha em mãos todos os dados, por exemplo:

ESTADO
CIDADE

Você seleciona o estado, usa um ajaxa para buscar as cidades daquele estado. Do jeito que vc quer fazer seria preciso ter em mãos todas as cidades e todos os estados.

D

As informações do segundo combo ñ são uma constante, podem mudar… então fica complicado eu deixar isso no código, melhor trazer do bd mesmo…
E com ajax, como eu poderia proceder?

G

Com ajax tem um monte de soluções. A mais famosa é o jquery.

obs.:Eu “particularmente” prefiro usar JSF para aplicar o ajax em sistemas web, sem dor de cabeça.

D

Obrigada… enfim consegui o que queria com as funções abaixo, chamando meu select num segundo *.jsp e trazendo seu resultado numa div criada na página

function GetXMLHttp() {

if (navigator.appName == Microsoft Internet Explorer) {

xmlHttp = new ActiveXObject(Microsoft.XMLHTTP);

} else {

xmlHttp = new XMLHttpRequest();

}

return xmlHttp;

}

var mod = GetXMLHttp();
function combo(valor) {

mod.open(“GET”, “cds_ent2.jsp?emp=”+valor+"", true);

mod.setRequestHeader(“Content-Type”, “application/x-www-form-urlencoded”);

mod.onreadystatechange = function() {

if (mod.readyState == 4) {

document.getElementById(“resultado”).innerHTML = mod.responseText;

}

};

mod.send(null);

}
Z

O que você poderia ter feito é qdo o combo tivesse mudado de indice, era só dar um submit na sua página, mandar pra alguma servlet ou controlador que processa esses dados e em seguida colocar todos os dados de novo no request e mandar de volta para a página

Criado 30 de setembro de 2010
Ultima resposta 6 de out. de 2010
Respostas 6
Participantes 4