Formulario dinámico

suaveSHOW

Bueno, no se si es la mejor manera de llamarlo como lo hice.

Estoy haciendo una página para una persona y en el registro hay dos etiquetas select, una con paises y otra con comunidades autonomas.

Me gustaría hacer que si seleccionas españa aparezca el codigo oculto con el select de comunidad autonoma.
Supongo que esto es con jquery, de lo cual no tengo mucha idea.
Mi otra opción es poner una opcion en el select que sea "No aplicable" o algo por el estilo, pero prefiero la otra manera.

Si alguien me puede pasar un articulo o explicarme como va más o menos.

Nos vemos, y gracias.

NeB1

si gastas jquery así:

<!--Esto que apunte donde tengas el archivo de jquery -->
<script src='./js/jquery-1.3.2.js' type='text/javascript'></script>

<script language="javascript" type="text/javascript">

$(document).ready(function(){	
  $("#idDivComunidades").hide();
  $("#idSelectPais").change(function(objEvent){
     if( $this.val() == "VALORESPAÑAENSELECT" )
       $("#idDivComunidades").slideDown("slow");
     else
       $("#idDivComunidades").hide();

  });
});
</script>

<body>

  <select id="idSelectPais">

  <option value="1"> hungría</option>
  <option value="2"> rep. checa</option>
  <option value="3"> holanda</option>
  <option value="VALORESPAÑAENSELECT"> España </option>
  </select>
  <div id="idDivComunidades">
    <select...>
  </div>

</script>

más o menos

suaveSHOW

#2 más o menos xd, lo decía para que no me hicierais el trabajo por la cara.

He adaptado el código y no funciona, así que pense otra optativa y con javascript tengo otra forma.

Que es esta.

registro.js

  var nc = (document.layers) ? true:false
  var ie = (document.all) ? true:false
  var n6 = (document.getElementById) ? true:false

  function muestracapa(id)
  {
     if(ie)
	 
  document.all[id].style.visibility="visible";
else if(nc)
  document.principal.document.fondo.document.layers[id].visibility="show";
 else if(n6)
   document.getElementById(id).style.visibility="visible";
   }

registro.php

<div id="pais">
<select name="flag" class="input">
      <option value="es" onclick="muestracapa('comunidad')">España</option>...
    </select> 
</div>

<div id="comunidad" style="visibility:hidden">
<select name="comunidad">
		<option value="Andalucía">Andalucía</option>...
</select>
</div>

El problema lo tengo en que el onclick no funciona en el option, y por lo tanto no lo carga, si lo pongo en cualquier otro lado si funciona.

NeB1

prueba a poner el método onchange en el select

suaveSHOW

Pero si pongo onchange seleccione alemania, seleccione bulgaría, da igual, cargara el div oculto.

YiTaN

#5 Si quieres que haga eso sólo cuando el país sea España, mete un if que controle el valor actual del select.

suaveSHOW

#5 se que ya es mucho pedir, pero no ando muy bien de JS, si me puedes decir como se haría.

Dod-Evers

El onchange va a una funcion js. En esta función compruebas el value del select. Si ese value es el de ESPAÑÑÑÑÑA muestras el otro select, else no.

Fr4nk0

Pon la funcion en el onchange como ya te han dicho, y luego en los parametros que le pasas a esa funcion , pasale tb el indice seleccionado en el select (this.selectedIndex). Luego dentro de javascript puedes acceder al valor de ese index de esta forma (en Firefox):
var elSelect= document.getElementById("id_del_select");
var valorSelect = elSelect[elSelect.selectedIndex].value;

if(valorSelect == "Espana") {......}

Dod-Evers

En prototype: $('selectId').value

suaveSHOW

Ando perdido, tendré que estudiarme JS, así que he optado por la opción de un option en el select con valor de No Aplicable, gracias por las ayudas.

Sr_RoS

AJAX

http://www.2mdc.com/blogs/programacion-web/un-ejemplo-sencillo-de-ajax

Usuarios habituales

  • Sr_RoS
  • suaveSHOW
  • Dod-Evers
  • Fr4nk0
  • YiTaN
  • NeB1