Mostrar y ocultar el contenido de un div con un checkbox

Siempre que tengamos contenido no muy importante o que no queramos resaltar en nuestra página Web o especialmente en los formularios, cuando nos referimos a campos no obligatorios, podriamos ocultarlos y mostrarlos al antojo del usuario medante un checkbox que muestre o no muestre el contenido según esté chekeado o no.

Para implementar esto necesitarmos crear una función javascript dentro de la etiqueta <head> de la siguiente forma:

<script type="text/javascript">
    function showContent() {
        element = document.getElementById("content");
        check = document.getElementById("check");
        if (check.checked) {
            element.style.display='block';
        }
        else {
            element.style.display='none';
        }
    }
</script>

Con esta función lo que conseguimos es obtener el elemnto con id=»content», que se trata del contenido escondido y seguidamente comprobar si el input checkbox con id=»check» está chekeado o no para mostrar o no el div con id=»content».

<b>Mostrar contenido?</b>
<input type="checkbox" name="check" id="check" value="1" onchange="javascript:showContent()" />

El código anterior estaría dentro del formulario y se trata del checkbox que mostrará o no según esté chekeado o no el div escondido.

Y finalmente, tendremos a continuación el div escondido que será mostrado al checkear el checkbox.

<div id="content" style="display: none;">
   contenido del div escondido<br/>
   contenido del div escondido<br/>
   contenido del div escondido<br/>
 </div>

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!
(26 votos, promedio: 5 de 5)
Comparte en las redes sociales
¿Buscas trabajo de programador?

35 respuestas a “Mostrar y ocultar el contenido de un div con un checkbox”

  1. Hugo Arturo dice:

    realize algo asi y si me despliega las tres opciones cronica, medicamentos y alimentos en tres diferentes filas pero cuando desmarco la opcion no desaparecen alguna idea de como solicionarlo

    function showContent() {
    element1 = document.getElementById(«cronica»);
    element2 = document.getElementById(«medicamentos»);
    element3 = document.getElementById(«alimentos»);
    check = document.getElementById(«check_cronica»);
    check = document.getElementById(«check_medicamentos»);
    check = document.getElementById(«check_alimentos»);
    if (check_cronica.checked) {
    element1.style.display=’block’;
    }
    if (check_medicamentos.checked) {
    element2.style.display=’block’;
    }
    if (check_alimentos.checked) {
    element3.style.display=’block’;
    }
    else {
    element.style.display=’none’;
    }
    }

  2. Hugo Arturo dice:

    buen dia tengo una duda en el siguiente codigo cuando selecciono contenido 1 o contenido 2 siempre ocupan el musmo lugar hay alguna manera que si quiero seleccionar las dos opciones el contenido 1 y contenido 2 se visualizen en diferente lugares

    function showContent() {
    element1 = document.getElementById(«content1»);
    element2 = document.getElementById(«content2»);
    check = document.getElementById(«check»);
    if (check.checked) {
    element1.style.display=’none’;
    element2.style.display=’block’;
    }
    else {
    element1.style.display=’block’;
    element2.style.display=’none’;
    }
    }

    Mostrar contenido?

    primero

    segundo

  3. Alexander dice:

    Excelente,

    Me fue de mucha ayuda

  4. Pedro dice:

    Hola,

    Y para montar esto en un formulario de WordPress con Contact Form 7??

    Gracias.

  5. Abdul dice:

    Utilize el codigo para un radiobuttom sirve excelente!!! pero ahora como hare para ocultar el mismo div al momento de dar la opcion «NO». ejemplo tengo un formulario que realiza una pregunta con opciones SI y NO al momento de seleccionar SI despliega el div oculto (el cual aplique el codigo), pero al seleccionar NO quisiera volver a ocultar el div

  6. cesar dice:

    Tendrás una versión similar pero usando radiobuttom

  7. Miguel Galicia dice:

    Muchas gracias, ha sido de mucha utilidad.

  8. cesar dice:

    hola!
    Gracias por el aporte solo lo modifique para poder usarla mas de 2 veces agregando un «1» al nombre de la función y en la siguiente le puse «2» asi sucesivamente.

  9. José Vargas dice:

    Hola Estoy tratando de hacer esto mismo pero con radio cuando carga normal activo el radio y me muestra la div pero cuando hago clic en otro radio la div no se oculta, alguien me podria ayudar con este tema

    • Jose Aguilar dice:

      Hola,

      Todo apunta a que te falta programar la parte de ocultar el div cuando se checkea el otro radio. Quizá si pudiéramos ver el código podríamos darte una respuesta más precisa.

      Saludos

  10. david dice:

    muchas gracias por el aporte la verdad 😀

    estaba buscanso como hacerlo ahora por medio de un clic XD soy nuevo

    Gracias.

  11. Ronald V. dice:

    Simple y funcional… excelente!

    Me sirvió para machetear un plugin de mostrado de formulario cuando se refiere a los términos de referencia que acepta el usuario antes de llenar un formulario, se visualice este o lo oculte.

    Gracias amigo!

  12. guille dice:

    Gracias por el codigo, nos viene genial para un formulario que estamos creando. Lo que si, al enviar el formulario y volver a ingresar en el, la información vuelve a estar oculta, esto como se podria solucionar?

  13. GuzmanT dice:

    Amigo–saludos amigo.. me funciono tu codigo gracias

  14. Andres dice:

    Hola jose. Tengo una duda. Ese código es para mostrar un formulario pero que pasa si quiero mostrar 3 formularios distintos, cada uno contenido en su respectivo div? Porque con ese código al presionar el checkbox me abre los 3 formularios al mismo tiempo. Mi idea es que mi sistema tenga 3 checkbox y que al presionar sobre alguno se abra el formulario correspondiente. Espero poder haberme explicado. Desde ya muchas gracias

    • Jose Aguilar dice:

      Hola, cambiando un poco el código puedes conseguir el efecto que deseas. Saludos

      • Andres dice:

        Hola jose. Eh probado muchos cambios y sigo sin conseguir el efecto deseado. Tengo 3 checked pero no hay manera de que cada uno abra su correspondiente formulario. Solamente me abre el formulario del primer checked. Si tienes alguna idea mas específica de lo que pueda hacer te agradeceria

  15. leo dice:

    Hola cómo haria para que se muestre un grupo de información al seleccionar un checkbox y otra información al seleccionar el otro checkbox, pero que se muestre sólo una información a la vez, al cambiar de checkbox se cambie la información

  16. Ricardo Siabato dice:

    Hola, como sería la función si en lugar de «getElementById» se usa «getElementByClassName»

    • Julian Moreno dice:

      Lograste Solucionarlo? yo también necesito en lugar de “getElementById” usar “getElementByClassName” pero no lo toma…. alguna guía??

  17. amquisher dice:

    gracias estimado, me sirvió mucho, le hice unos cambios para adaptarlo a lo que necesitaba:

    function showContent() {
    element1 = document.getElementById("content1");
    element2 = document.getElementById("content2");
    check = document.getElementById("check");
    if (check.checked) {
    element1.style.display='none';
    element2.style.display='block';
    }
    else {
    element1.style.display='block';
    element2.style.display='none';
    }
    }

    Mostrar contenido?

    primero

    segundo

  18. amquisher dice:

    gracias estimado, me sirvió mucho, le hice unos cambios para adaptarlo a lo que necesitaba:

    function showContent() {
    element1 = document.getElementById(«content1»);
    element2 = document.getElementById(«content2»);
    check = document.getElementById(«check»);
    if (check.checked) {
    element1.style.display=’none’;
    element2.style.display=’block’;
    }
    else {
    element1.style.display=’block’;
    element2.style.display=’none’;
    }
    }

    Mostrar contenido?

    primero

    segundo

  19. Oswaldo dice:

    Excelente aporte!

  20. Javier Amela dice:

    el ejemplo que necesito claro y conciso, siempre a gradecido a vosotros que practicais el enseñar de esta forma, vosotros si revolucionas el mundo
    Gracias

  21. marco dice:

    gracias justo lo que buscaba muy buen aporte aver si me ayudas yo quiero para muchos selects con el mismo id

  22. Josefo dice:

    Yo tuve un ligero inconveniente con el «onchange» como utilizo forsozamente IE no hacia el chequeo hasta que daba clic en otra cosa asi que lo cambié por el «onclick» y problema resuelto si a alguien le pasa lo mismo aqui les dejo este pequeño dato… Saludos. [JSD]

  23. Julio dice:

    Perfecto, simple de implementar y funciona bien

  24. Alejandro dice:

    Gracias, lo solucione de esta manera:

    Agregue checked al input y en el div cambie el (style=»display: none;») por (style=»display: block;»)

  25. Alejandro dice:

    Es la función que buscaba, solo que me interesa que los checkbox estén seleccionados desde el principio y se oculte cuando se desmarque.

    Alguien que me pudiera ayudar con esto, se lo agradecería mucho.

  26. Francisco dice:

    Estimado, un gran aporte. Muchas 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.

Ver más sobre