Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Cargar un select, dependiendo de otro

Estas en el tema de Cargar un select, dependiendo de otro en el foro de Javascript en Foros del Web. Buenos Días Como el título lo dice, busco llenar un select dependiendo de la selección que se haya hecho en otro select anterior. Bueno he ...
  #1 (permalink)  
Antiguo 29/01/2015, 09:51
 
Fecha de Ingreso: diciembre-2014
Ubicación: Colombia
Mensajes: 18
Antigüedad: 9 años, 4 meses
Puntos: 0
Exclamación Cargar un select, dependiendo de otro

Buenos Días


Como el título lo dice, busco llenar un select dependiendo de la selección que se haya hecho en otro select anterior.

Bueno he desarrollado el siguiente código:

Form:
Código HTML:
<form class="bootstrap-frm" name="f1" action="registro.php" method="POST" enctype="multipart/form-data" onsubmit="return comprobar(this)">
		<table>
		<tr >
			<h1>Formulario de Registro de Funcionarios</h1>
		</tr>
		<tr>
			<td></td>			
			<td class="FormLabel" align="center">
				<strong><label>Datos Personales</label></strong>
			</td>
		</tr>
		<tr><td></td><td><hr width=355></td></tr>				
		<tr>
			<td class="FormLabel">
				<label>Nombres</label>
			</td>
			<td>
				<input required type="text" title="Solo se Permiten Letras Mayusculas o Minusculas de la A a la Z,
 maximo 50 caracteres." required pattern="[a-zA-Z\s]{1,50}" name="name">
			</td>
		</tr>
		<tr>
			<td class="FormLabel">
				<label>Apellidos</label>
			</td>
			<td class="FormFieldContent">
				<input title="Solo se Permiten Letras Mayusculas o Minusculas de la A a la Z,
 maximo 50 caracteres." required pattern="[a-zA-Z\s]{1,50}" type="text" name="surname">
			</td>
		</tr>		
		<tr>
			<td>
				<label>Tipo de Documento</label>
			</td>
			<td>
				<select required name="ofi1">					
					<option value="01">Cédula de Ciudadanía</option>
					<option value="02">Cédula de Extranjería</option>
					<option value="03">Tarjeta de Identidad</option>
					<option value="04">Pasaporte</option>
					<option value="05">Otro</option>
				</select>
			</td>
		</tr> 
		<tr>
			<td class="FormLabel">
				<label>Documento</label>
			</td>
			<td class="FormFieldContent">
				<input title="El documento debe tener maximo 32 caracteres." required pattern="{1,32}" type="text" name="doc">
			</td>
		</tr>
		<tr>
			<td class="FormLabel">
				<label>Correo Electrónico</label>
			</td>
			<td class="FormFieldContent">
				<input required pattern="[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+){1,100}" title="El email debe tener este formato: [email protected],
 maximo 100 caracteres." type="email" name="email" placeholder="Ingrese su email.">
			</td>
		</tr>
		<tr>
			<td></td>			
			<td class="FormLabel" align="center">
				<strong><label>Estructura Administrativa</label></strong>
			</td>
		</tr>
		<tr><td></td><td><hr width=355></td></tr>		
		<tr>
			<td class="FormLabel">
				<label>Seleccione</label>
			</td>
			<td class="FormFieldContent">
				<select required name="rango" onchange='cargarSelect2();'>
					<option value="0">-</option> <?php
					$con = mysql_connect($host,$user_db,$pw);
					mysql_select_db($db,$con);
					$registro = mysql_query("SELECT DISTINCT cod_ran,rango_dep FROM ESTRUCTURA",$con);
					while($reg=mysql_fetch_array($registro)){?>
						<option value=" <?php echo $reg['cod_ran']; ?> "> <?php echo utf8_encode($reg['rango_dep']); ?> </option> <?php 
					} ?>					
				</select>
			</td>
		</tr>
		<tr>
			<td class="FormLabel">
				<label>Seleccione</label>
			</td>
			<td class="FormFieldContent">
				<div id="states_container"></div>
			</td>
		</tr>
		<tr><td></td><td><hr width=355></td></tr>		
		<tr>
			<td class="FormLabel">
				<label>Contraseña</label>
			</td>
			<td class="FormFieldContent">
				<input required title="La contraseña debe tener minimo 5 caracteres y maximo 32." pattern="{5,20}" type="password" name="password">
			</td>
		</tr>
		<tr>
			<td class="FormLabel">
				<label>Confirme la contraseña</label>
			</td>
			<td class="FormFieldContent">
				<input required title="La contraseña debe tener minimo 5 caracteres y maximo 32." pattern="{5,20}" type="password" name="password2">
			</td>
		</tr>
		
	</table>
	<div align="right">		
	<input class="button" style="cursor:pointer;" type="submit" value="Crear Usuario">
	</div>
	</form> 
Función JavaScript:
Código HTML:
<script type="text/javascript">
	
		function cargarSelect2(){
            
            var formName = 'f1'; 
            var dat = document[formName]['rango'].value;
            
            var xmlhttp = null;
            if(typeof XMLHttpRequest != 'udefined'){
                xmlhttp = new XMLHttpRequest();
            }else if(typeof ActiveXObject != 'undefined'){
                xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
            }else 
                throw new Error('El navegador no soporta AJAX');
                
            xmlhttp.open('GET', 'llena_select2.php?dat='+dat, true);
            xmlhttp.onreadystatechange = function (){
                if(xmlhttp.readyState == 4)
                    insertStates(xmlhttp);
            };
            xmlhttp.send(null);
        }

        function insertStates(xhr){
            if(xhr.status == 200){
                document.f1.getElementById('states_container').innerHTML = xhr.responseText;
            }else 
                throw new Error('El servidor ha encontrado un error\n'+
                                 'Codigo de Error = '+xhr.status);
        }
	</script> 
Archivo PHP(llena_select2.php):
Código HTML:
<?php 
	
	include("conexion.php");
	//$valor = strip_tags(addslashes($_REQUEST['q']));
	$c = $_GET['dat'];
	$con = mysql_connect($host,$user_db,$pw);
	mysql_select_db($db,$con);
	$registro = mysql_query("SELECT id,dep FROM  ESTRUCTURA WHERE  cod_ran = '$c'",$con) or die(mysql_error());
	
	if(isset($_GET['dat'])) 
        {
            $states = '';            
            while($row = mysql_fetch_assoc($registro))
            {
                $states .= '<option value="'.$row['id'].'">'.$row['dep'].'</option> <br>';                 
            }
            if($states == '')
                echo '';
            else 
                echo '<select name="rango2"><option disabled>-</option>'.$states.'</select>';
            
        }
 ?> 
El problema es que no logro que aparezca el segundo select. No se en que me estoy equivocando, agradezco su ayuda.

Etiquetas: ajax, dependiendo, formulario, funcion, input, php, select, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:28.