Seleccionar opción para mostrar un formulario u otro

En este artículo vamos a ilustrar como tener un combo o selector que tras cambiar de opción se muestra un contenido u otro.

En el ejemplo que vamos a detallar, los contenidos que pretendemos mostrar son formularios. Se trataría de que si el usuario elige una de las opciones: estudiantes, trabajador, autónomo o en paro mostramos un formulario u otro.

Como tenemos 4 combos en el selector principal, necesitaremos tener 4 contenedores escondidos.

Para mostrar el formulario que toca según la opción escogida, hemos creado la siguiente función jQuery que deberemos incluir junto con la librería jQuery en nuestro <head>:

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
function mostrar(id) {
    if (id == "estudiante") {
        $("#estudiante").show();
        $("#trabajador").hide();
        $("#autonomo").hide();
        $("#paro").hide();
    }

    if (id == "trabajador") {
        $("#estudiante").hide();
        $("#trabajador").show();
        $("#autonomo").hide();
        $("#paro").hide();
    }

    if (id == "autonomo") {
        $("#estudiante").hide();
        $("#trabajador").hide();
        $("#autonomo").show();
        $("#paro").hide();
    }

    if (id == "paro") {
        $("#estudiante").hide();
        $("#trabajador").hide();
        $("#autonomo").hide();
        $("#paro").show();
    }
}
</script>

Si nos fijamos, a la función mostrar(id) le estamos pasando un parámetro que no es más que la id de la opción escogida.

Según la opción escogida, dentro de la función miramos de mostrar lo que toque y ocultar el resto.

En nuestro <body> tendremos 4 contenedores ocultos como el siguiente:

<div id="estudiante" style="display: none;">
    <h2>Si eres estudiante...</h2>
    <form action="index.php" method="post">
        <p>Nombre:<br/>
        <input type="text" name="nombre" /></p>
        <p>Centro:<br/>
        <input type="text" name="centro" /></p>
        <input type="submit" name="send" value="Enviar" />
    </form>
</div>

Y también tendremos un formulario principal el cual contiene el combo con las opciones a escoger:

<form action="index.php" method="post">
    Estado actual: 
    <select id="status" name="status" onChange="mostrar(this.value);">
        <option value="estudiante">Estudiante</option>
        <option value="trabajador">Trabajador</option>
        <option value="autonomo">Autónomo</option>
        <option value="paro">En el paro</option>
     </select>
</form>

Y con todo esto ya tendríamos la funcionalidad que se pretende con este artículo.

Ver ejemplo en funcionamiento

Autor
Escrito por Jose Aguilar - Director ejecutivo y tecnológico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.
Te ha servido? Valora esta entrada!
(36 votos, promedio: 5 de 5)
Comparte en las redes sociales
¿Buscas trabajo de programador?

66 respuestas a “Seleccionar opción para mostrar un formulario u otro”

  1. Renier Márquez dice:

    Muchas gracias, me sirvió al tiro

  2. VLADIMIR dice:

    MUCHAS GRACIAS ME SIRVIÓN MUCHISIMO

  3. Eduardo Aguilar dice:

    Excelente ejemplo, me sirvio muy bien para lo que estaba haciendo, gracias por el aporte

  4. Xvideos dice:

    Deberias subirlo el proyecto para que podamos descargarlo sin problemas

  5. Julian dice:

    Donde consigo el JQuery

  6. Hugo Arturo dice:

    bue día muy buen tips amigo una pregunta como puedo hacerlo para un input type=»checkbox»

    • Jose Aguilar dice:

      Una forma rápida de probarlo es agregar el atributo onClick llamando a la función. Entiendo que debe funcionar pero quizá tendrás que controlar si el input tipo checkbox está checkeado o no

  7. Wilson dice:

    Hola, muy bueno, me función bien, tengo una pregunta lo quiero repetir en varios campos en el mismo formulario, pero no me guarda todos solo uno.

  8. Jaime Garcis dice:

    necesito ayuda, algo asi quiero desarrollar pero despues de procesar los datos de php me muestre el formulario de acuerdo a lo que extrae de la base de datos

  9. LucasFM dice:

    Buenisimo! muchas gracias! Necesitaba hacer un formulario que muestre unos datos solo si el que completaba era casado, cualquier otro estado civil no, asi que hice solo un if con un else en el script y anda perfecto!

  10. José dice:

    Hola. Me a gustado y a funcionado bien. Pero me surge una duda, ¿como se procesarían los datos con php?

    • Jose Aguilar dice:

      Hola,

      Debes programar la acción que debe producirse tras pulsar el botón enviar cono PHP.

      En el lugar deseado de tu archivo PHP principal o en el archivo que recibe la acción del formulario debes colocar el código que realizará el proceso. En el caso del ejemplo debes agregar una condición similar a:


      if (isset($_POST['send'])) {
      //procesar datos
      }

      Espero te sirva,
      Saludos

  11. Andresq94 dice:

    Excelente ejemplo, más claro imposible 😀

  12. joel dice:

    excelente ejemplo muy útil para poder empezar a programar

  13. Caro dice:

    Ese código va en solo archivo??

  14. Caro dice:

    todo va en solo archivo??

  15. Jorge Garduza dice:

    Excelente aporte, me ha funcionado tal cual, bueno solo hice unas adecuaciones para lo que necesitaba en mi formulario pero ha funcionado genial!!!

    Gracias!

  16. Lily dice:

    Hola Buenos dias.
    Disculpen me gustaria pudieran enviar este pequeño proyecto, lo eh intentado pero no me corre, inclusive con el mismo archivo de javascript.MI correo es lili190395@hotmail.com

    • Jose Aguilar dice:

      Hola que tal,

      Te lo tendría que preparar.

      Para este tipo de ayudas que se salen de lo que hay disponible en el blog lo que podemos hacer es que nos envíes un correo a blog@jose-aguilar.com con todos los detalles para que revisemos como podemos proceder.

      Saludos

  17. morgan dice:

    ola, muy buen tutorial, ya lo probé y si jaló, sólo que tengo un detalle espero me puedan ayudar, lo que pasa esque quiero hacerlo con datos de mi base de datos el detalle está así, es para agendar citas en un hospital de especialidades, cada paciente tiene uno o varios medicos asignado, entonces ago mi consulta y en mi formulario me arroja en el select laas especialidades de sus medicos, quiero que cuando el paciente seleccione una de ellas me aparezca una tabla de horarios de ese medico, en el cual va a seleccionar el horario de reserva de su cita, ya modifique pero no me jala, quiero suponer que algo tiene que ver esta parte del codigo: Estudiante, el detalla está en que mi value lo adquiere de mi base de datos y no puedo modificarlo, entonces como ole pudo hacer?

  18. javi dice:

    hola antes q nada agradecer el codigo lo probe y funciona muy bien ahora si al seleccionar una opcion de para insertar a una tabla en mysql como se podria hacer

    • Jose Aguilar dice:

      Hola,

      Para insertarlo en una base de datos tendrás que añadir un formulario con un botón. Recoger los valores del formulario y luego hacer las queries necesarias para insertar en la tabla que sea. El siguiente artículo puede ayudarle a insertar en la base de datos:
      http://www.jose-aguilar.com/blog/interactuar-con-una-base-de-datos-utilizando-mysqli/

      En el post se habla de UPDATE pero para INSERT se puede hacer lo mismo.

      Saludos

      • javi dice:

        hola muchas gracias por responder lo q pasa esq stoi realizando un proyecto para mi escuela pero ahi al seleccionar el primer o segundo formulario me permita insertar en una tabla en mysql 🙂 de antemano gracias lei el articulo q me recomendaste , gracias

  19. Yanira Martinez dice:

    Hola, ¿y si solo quisiera ocultar el contenedor de una opción del comboBox y las demas opciones que carguen en otra pagina, como sería?

  20. JOHN FONSECA dice:

    Muy buen post me ayudo mucho gracias por compartir

  21. roman dice:

    muy buen código me funciono perfectamente para otra versión que necesitaba muchas gracias amigo

  22. Maduro Fuera dice:

    Hola, funciona muy bien. Para los que deseen ver el codigo, en la página de ejemplo que nos nuestra Jose Aguilar pueden dar boton derecho y dan clic donde dice «ver codigo fuente» alli esta el codigo perfectamente funcionando. Funciona perfecta mi adaptacion en ASP.

  23. Paulina Rojas dice:

    Hola…
    Estoy haciendo algo parecido
    Me podrían facilitar el código
    Mi correo es paulina-margarita@hotmail.com
    Se los agradezco

    • Jose Aguilar dice:

      Hola buenas tardes,

      No tenemos disponible ahora mismo poder acceder al servidor a crear un paquete de descarga. De todas formas el código está implícito en la explicación del código. Lo puedes copiar de ahí leyendo las indicaciones.

      Saludos

  24. Oscar Dario dice:

    excelente post, todo muy sencillo y al 100! Gracias

  25. Jose David dice:

    Y como puedo implementarlo en mi codigo, yo programo con programacion orientada a objeto en php, osea clasifico los archivos en carpetas, los index en una carpeta vista, los controladores en una carpeta control los modelos de base datos en modelos y los js en carpeta js, osea tengos los formularios en una carpeta, ya hechos.

  26. Daniel dice:

    Perfecto, muchísimas gracias. Me he vuelto loco buscando esto y lo pones muy sencillo. Es un gusto iniciarse en programación cuando hay gente como vosotros que hace tutoriales.

    Saludos

  27. zonda dice:

    al momento de cambiar de seleccion quisiera que elimine los datos que se le habian insertado

  28. cristhian dice:

    Compañeros Necesito Hacer Esta Funcion doble vez.En la parte Superior Me funciona Normalmente , pero En La parte Inferior Del Formulario no he podido plantear la funcion, y pues la verdad no se como poner En la parte superior de java La segunda Funcion Mostrar.
    Ayuda

  29. pao dice:

    yo copio el codigo y baje el archivo .css y el js y no me funciona… alguien sabe porq???

  30. daniel dice:

    amigo excelente tutorial, quisiera pedirte ayuda estoy haciendo un proyecto donde tengo un formulario y registro datos personales de un estudiante quiero colocar un botón siguiente (next) y que me lleve a otro formulario para registrar los datos de salud del mismo estudiante.

    Gracias espero me puedas ayudar con la función para llamar al siguiente formulario

  31. alex vasquez dice:

    Mi estimado bien con el codigo, pero esto tambien puede servirme para mantener un encabezado con botones y de acuerdo a la opcion que elija me muestra un formulario que corresponda?, Gracias!

  32. estela dice:

    hola gracias por tu aporte, ejecuto el codigo pero no muestra los formularios, tambien cree el stylo y la libreria, podria mandarme el codigo por favor catilin27@gmail.com

  33. jhon dice:

    DIscupal me puedes ayudar necesito lo mismo pero q los datos del combo que estan filtrados desde una base de datos, al escojer yo una opcion me parecesca un formulario, pero cuando yo escoja otra opcion me despliegue el mismo formulario pero ya sin algunas opciones para llenar .

  34. luisk55@hotmail.com dice:

    Que tal hermano, estoy intentando generar una serie de formularios dependiendo de la opción seleccionada en el (el cual tiene como opciones: 1,2,3… y así sucesivamente). Dependiendo de la opción seleccionada, debería mostrar uno de los formularios, siguiendo más o menos la siguiente estructura:

    d1:

    d1:
    d2:

    d1:
    d2:
    d3:

    Estoy utilizando el script que ud propone, para mostrar u ocultar el seleccionado. Al momento de enviar los datos, para ser procesados, estos no son enviados por el método POST, mi pregunta es: si es posible utilizar un «name» repetido en los input de cada formulario, como esta indicado en el fragmento de código anterior; destaco que en el primer formulario estoy utilizando el name «d1», y el mismo se repite en los siguientes formularios. Esto es posible para el envío de datos POST, o quizás es este el error cometido?? Gracias de antemano… Saludos.

  35. Jazmín Montiel Ramírez dice:

    Disculpa me podrias enviar tu codigo. Es que lo hice pero no me funciona.

    Mi correo es jaz_1991_amor@hotmail.com

  36. flor dice:

    copio tal y cual el código pero no me funciona que le faltara ya descargue el js. que podrá ser

  37. felix dice:

    para enviar los datos a un formulario?¡¡?¡?¡ no me los envia por mas que le spongo id y name¡??¡

    cual es la solucion ¡?¡

  38. Victor dice:

    Este amigos Aqui esta el JS que les faltaa Se a olvidado http://www.jose-aguilar.com/scripts/jquery/select-show-forms/js/jquery.js

  39. jose roberto dice:

    copie el codigo en mi pagina y no me funciona no me oculta las div me muestraa los datos pero fuera y no ayo como solucionar, mearia favor de mandarme el codigo al correo sejo_roberto-15@hotmail.com

    • Jose Aguilar dice:

      Yo creo que lo único que puede faltarte es el archivo jquery

      Te lo puedes descargar viendo el ejemplo en funcionamiento o descargarlo de la página oficial de jquery.

  40. Luis dice:

    Muchísimas gracias, funciona muy bien. Lo había hecho más complicado, pero tu código es compacto y eficiente. Gracias

  41. Amado dice:

    Me podrian enviar el codigo a mi correo maricela_amado1990@hotmail.com

  42. Xzelot dice:

    Yo lo transformé a esto. mis id de las option en vez de ser por nombre son numéricos, pero mis divs siguen llamandose por su nombre. Con un poco de jquery y algo de efecto.

    $(‘#status’).change(function () {
    if($(‘#status option:selected’).val()==’2′){
    $(‘#factura’).show(500);
    $(‘#boleta’).hide();

    }
    });

    Si quieren que aparezca algo inmediatamente le agregan el trigger:

    $(‘#status’).change(function () {
    if($(‘#status option:selected’).val()==’2′){
    $(‘#factura’).show(500);
    $(‘#boleta’).hide();

    }
    }).trigger(‘change’);;

  43. Rodolfo dice:

    Voy a probar a ver que tal Gracias

  44. Daniel Lopez dice:

    buen dia…
    implemente el codigo con mis datos…. tengo una duda… me muestra los datos que tengo dentro div por fuera (no los oculta)… y el div me lo muestra en la parte superior…haciendo el efecto, ocultar y mostrar

  45. Luis dice:

    Hace falta algun archivo ? coloco el codigo y no me sirve lo estoy probando en wamp 2.0

  46. Luis Flores dice:

    ya copie y pegue los codigos pero no me funciona el programita… que me hace falta… en DW el jquery.is pero no se que sea eso… gracias

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.