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

ChronoMX Seguir

Beta
Verificación en dos pasos desactivada
Desde
7 Ago 2010
Mensajes
50
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
 

ziney

Eta
Programador
Verificación en dos pasos desactivada
Desde
9 Oct 2011
Mensajes
1.285
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>');
});

}
 

ChronoMX

Beta
Verificación en dos pasos desactivada
Desde
7 Ago 2010
Mensajes
50
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.
 

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba