Ajuda: Select condicional de outro, não limpa quando muda a seleção

  • Autor Autor ChronoMX
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
C

ChronoMX

Beta
Usuário com poucas negociações! Use sempre o saldo do ForoBeta!
Hola, habia estadno buscando una funcion para a partir de un select, obtener una lista en otro, lo he personalizado y todo funciona bien, excepto que cuando cambia la seleccion del primer select, se suman los nuevos valores al segundo, el ejemplo lo segui de un videotutorial pero segun yo, he hecho todo bien.

Pongo el codigo lo mas resumido posible por si alguien puede auxiliarme resolviendo el error que tengo.

index.php
Inserir CODE, HTML ou PHP:
<select id="primerCombo" onchange="SeleccionandoCombo(this, 'segundoCombo');">
	<option value="">Selecciona tu zona</option>
	<option value="DC000">Valor 1</option>
    <option value="DC010">Valor 2</option>
</select>
<br />
<select id="segundoCombo"></select>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
function LimpiarCombo(combo){
	while(combo.lenght > 0){
		combo.remove(combo.length-1);
	}
}
function LlenarCombo(json, combo){
	combo.options[0] = new Option('Selecciona un item', '');
	for(var i=0;i<json.length;i++){
		combo.options[combo.length] = new Option(json[i].data, json[i].id);
	}
}
function SeleccionandoCombo(combo1, combo2){
	combo2 = document.getElementById(combo2); //con jquery: $("#"+combo2)[0];
	LimpiarCombo(combo2);
	if(combo1.options[combo1.selectedIndex].value != ""){
		combo1.disabled = true;
		combo2.disabled = true;
		$.ajax({
			type: 'get',
			dataType: 'json',
			url: 'ajax.php',
			data: {valor: combo1.options[combo1.selectedIndex].value},
			success: function(json){
				LlenarCombo(json, combo2);
				combo1.disabled = false;
				combo2.disabled = false;
			}
		});
	}
}

ajax.php
Inserir CODE, HTML ou PHP:
<?php
$_valor = $_GET['valor'];
switch($_valor){
	case 'DC000':
		$_arreglo[] = array('id' => 47035, 'data' => 'Opcion 1');
		$_arreglo[] = array('id' => DC004, 'data' => 'Opcion 2');
		break;
	case 'DC010':
		$_arreglo[] = array('id' => DCO12, 'data' => 'Opcion 1');
		$_arreglo[] = array('id' => DCO1E, 'data' => 'Opcion 2');
}
echo json_encode($_arreglo);
?>

Tengo la funcion de LimpiarCombo pero no se de que manera implementarla correctamente
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Hola,
Antes de llenar el combo, te recomiendo limpiar el compo. Ya sea con empty o clear.

Solo necesitarías una función:

HTML:
function llenarCombo(enElCombo,json){
$combo = $(enElCombo).
$combo.empty();

//Recorres el JSON con un EACH o FOR

$.each(json,function(i,val){
           $combo.append('<option value="'+val.valor+'">'+val.nombre+'</option>');
});

}
 
Muchas gracias por tu ayuda, me fue util para otra parte del codigo en la que rellenaba campos de texto con el 2do select. Decidi mejor que al seleccionar una opcion del primero, se bloqueara este y solo dejara mover el 2do.
 
Voltar
Topo