Ayuda: Select condicional de otro, no limpia cuando cambia la seleccion

  • Autor Autor ChronoMX
  • Fecha de inicio Fecha de inicio
C

ChronoMX

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de 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
Insertar CODE, HTML o 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
Insertar CODE, HTML o 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
 
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.
 
Atrás
Arriba