Llevo poco tiempo en esto de la informática y he pasado algunas veces por aquí para aclarar algunas cosas, pero javascript se me ha convertido en un mundo nuevo. Necesito resolver un asunto con un formulario y ya tengo varias opciones vistas pero no me gustan.
Es, por así decir, el típico caso de los dos combos que según selecciones en el primero aparecen opciones en el segundo, tipo comunidad autónoma // provincia.
He visto lo del z-position y lo del hide. Pero eso sólo se aplica a combos enteros. También hay otro muy sencillo que trata de hacer arrays en js, pero no me sirve porque en mi caso serían arrays muy largos.
A mi me gustaría algo que ocultase todos los elementos del segundo combo y mostrase los que tuviesen relación con el primer combo. Además de que las opciones de ambos deben ser cargadas desde base de datos.
El código que de momento tengo sería:
Código:
Cada parte del código está entre sus correspondientes etiquetas html o php, lo que puse son fragmentos<? //origen $query = "SELECT * FROM origen"; $Corigen = mysql_query ($query) or die(mysql_error()); //detalle origen $query = "SELECT * FROM detalle_origen"; $Cdet_origen = mysql_query ($query) or die(mysql_error()); ?> <div class="origen_documento"> <p>ORIGEN: <select name="origen" onchange="escoge()"> <option value="0">(Por favor, escoja:)</option> <? while ($row = mysql_fetch_array ($Corigen)) { echo "<option value="; echo $row['id_origen']; echo ">"; echo $row['origen']; echo "</option>"; } ?> </select></p> <p>DETALLE ORIGEN: <select name="det_origen" id="det_origen"> <option value="0">(Por favor, escoja:)</option> <? while ($fila = mysql_fetch_array ($Cdet_origen)) { echo "<option value="; echo $fila['id_detalle']; echo "class="; echo $fila['rel_origen']; echo ">"; echo $fila['det_origen']; echo "</option>"; } ?> </select></p> </div>
La funcion que por el momento tengo es algo así:
Código:
La función está sin terminar porque no consigo que oculte los elementos del segundo combo. Supuse que si a cada elemento le daba una clase (del 1 al 6) [viene de la query que relaciona origen con el detalle_origen] si usaba: $('.1').hide() ; ocultaría los correspondientes a la clase 1. Pero como eso no funciona pues no la tengo terminada. Una vez eso funcionase me faltaría poner un "if" que mostrase aquel que tenga la misma clase que el valor seleccionado en el combo uno.<script language="JavaScript"> function escoge() { $('.1').hide(); $('.2').hide(); $('.3').hide(); $('.4').hide(); $('.5').hide(); $('.6').hide(); var n = getElementByName('origen').value; } </script>
Bueno, pues esa es toda mi pregunta, espero haberla redactado bien. También agradecería que me sugiriesen sitios web o libros para aprender bien javascript, mi principal falta es el desconocimiento de muchas funciones del tipo getElementBy o document.ready, etc.
Saludos!