Foros del Web » Programando para Internet » Javascript »

Abrir mas de un modal

Estas en el tema de Abrir mas de un modal en el foro de Javascript en Foros del Web. Hola amigos Quiero poner mas de una ventana modal en una sola página. Con un botón si funciona normal, pero cuando quiero agregar otro botón ...
  #1 (permalink)  
Antiguo 10/01/2018, 10:38
 
Fecha de Ingreso: abril-2010
Ubicación: Lima
Mensajes: 116
Antigüedad: 14 años
Puntos: 1
Abrir mas de un modal

Hola amigos
Quiero poner mas de una ventana modal en una sola página.
Con un botón si funciona normal, pero cuando quiero agregar otro botón con otro contenido, este último ya no abra la ventana.
Intente duplicar los scripts y no me ha funcionado.
Este es el enlace donde quiero aplicar mas de una ventana modal.

Espero puedan ayudarme
  #2 (permalink)  
Antiguo 10/01/2018, 10:44
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Abrir mas de un modal

El error está en que utilizas dos elementos con el mismo id siendo que el valor de este atributo debe ser único en todo el documento.

Puedes usar un id distinto para el segundo <div> o bien puedes usar una clase (que sí puede repetirse) y tomar al <div> con la propiedad .nextElementSibling aplicada en el botón, aunque hay otras formas más elegantes y eficientes de hacer esto.

Posdata: La próxima vez publica el código aquí.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 10/01/2018, 11:17
 
Fecha de Ingreso: abril-2010
Ubicación: Lima
Mensajes: 116
Antigüedad: 14 años
Puntos: 1
Respuesta: Abrir mas de un modal

Le cambie de nombre al id del sgdo botón y al div y no abre tampoco.
css:
Código CSS:
Ver original
  1. .modal {display: none;
  2.     position: fixed;
  3.     z-index: 1;
  4.     padding-top: 100px;
  5.     left: 0;
  6.     top: 0;
  7.     width: 100%;
  8.     height: 100%;
  9.     overflow: auto;
  10.     background-color: rgb(0,0,0);
  11.     background-color: rgba(0,0,0,0.4);
  12.      -webkit-transition: opacity 400ms ease-in;
  13. -moz-transition: opacity 400ms ease-in;
  14. transition: opacity 400ms ease-in;}
  15. /* Modal Content */
  16. .modal-content {background-color: #fefefe;
  17.     margin: auto;
  18.     padding: 20px;
  19.     border: 1px solid #888;
  20.     width: 80%;}
  21. /* The Close Button */
  22. .close {color: #aaaaaa;
  23.     float: right;
  24.     font-size: 28px;
  25.     font-weight: bold;}
  26. .close:hover,
  27. .close:focus {color: #000;
  28.     text-decoration: none;
  29.     cursor: pointer;}

Html:
Código HTML:
Ver original
  1. <button id="myBtn">Abrir Modal</button>
  2. <!-- The Modal -->
  3. <div id="myModal" class="modal">
  4.   <div class="modal-content">
  5.     <span class="close">&times;</span>
  6.     <p>Un intercomunicador es un dispositivo de intercomunicación. Puede definirse como un sistema independiente de comunicación electrónica destinado a un diálogo limitado o privado. Los intercomunicadores pueden ser portátiles, pero son generalmente instalados permanentemente en negocios, edificios y hogares. </p>
  7.   </div>
  8. </div>
  9.  
  10. <button id="myBtn2">Abrir otro Modal</button>
  11. <div id="myModal2" class="modal">
  12.   <div class="modal-content">
  13.     <span class="close">&times;</span>
  14.     <p>Detección de fugas eléctricas con meghómetro, instalaciones eléctricas en general, cableados, mediciones eléctricas, tableros thermomagnéticas, balanceos de carga, instalaciones de MT,BT. Protocolos de mediciones eléctricas.</p>
  15.   </div>
  16. </div>

Java:
Código Javascript:
Ver original
  1. // Get the modal
  2. var modal = document.getElementById('myModal','myModal2');
  3. var btn = document.getElementById("myBtn","myBtn2");
  4. var span = document.getElementsByClassName("close")[0];
  5. btn.onclick = function() {
  6.     modal.style.display = "block";
  7. }
  8. span.onclick = function() {
  9.     modal.style.display = "none";
  10. }
  11. window.onclick = function(event) {
  12.     if (event.target == modal) {
  13.         modal.style.display = "none";
  14.     }
  15. }

Que es lo que necesito cambiar o agregar para que funcionen ambas ventanas modales.
Agradeceré mucho tu ayuda
  #4 (permalink)  
Antiguo 10/01/2018, 11:35
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Abrir mas de un modal

El método .getElementById() solo puede recibir un parámetro que es el identificador del elemento que se desea tomar. Bien puedes repetir el código: un bloque para "myModal" y otro idéntico para "myModal2", o puedes construir una función que tenga dicho bloque de código pero que reciba el identificador como parámetro para que así no tengas que repetir el código. Como veo que no solo se trata de la ventana modal sino también del botón y otros elementos, te convendría trabajar con los identificadores respectivos como parámetros de la función.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 10/01/2018, 12:00
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Abrir mas de un modal

Has estos cambios a ver, estan con jquery:

Código HTML:
Ver original
  1. <h2>Ejemplos</h2>
  2. <button data-modal="myModal" class="boton" id="myBtn">Abrir Modal</button>
  3. <!-- The Modal -->
  4. <div id="myModal" class="modal">
  5.   <div class="modal-content">
  6.     <span class="close">&times;</span>
  7.     <p>Un intercomunicador es un dispositivo de intercomunicación. Puede definirse como un sistema independiente de comunicación electrónica destinado a un diálogo limitado o privado. Los intercomunicadores pueden ser portátiles, pero son generalmente instalados permanentemente en negocios, edificios y hogares. </p>
  8.   </div>
  9. </div>
  10.  
  11. <button data-modal="myModal2" class="boton" id="myBtn2">Abrir otro Modal</button>
  12. <div id="myModal2" class="modal">
  13.   <div class="modal-content">
  14.     <span class="close">&times;</span>
  15.     <p>Detección de fugas eléctricas con meghómetro, instalaciones eléctricas en general, cableados, mediciones eléctricas, tableros thermomagnéticas, balanceos de carga, instalaciones de MT,BT. Protocolos de mediciones eléctricas.</p>
  16.   </div>
  17. </div>

Código Javascript:
Ver original
  1. $('.boton').click(function(){
  2.         var id = $(this).attr('data-modal');
  3.     $("#"+id).css('display','block');
  4. });
  5.  
  6. $(".close").click(function(){
  7.         $(this).parent().parent().css('display','none');
  8. })
  9.  
  10. $(".modal").click(function(event) {
  11.         $(this).css('display','none')
  12. })

en CSS queda igual

MUESTRA
__________________
[email protected]
HITCEL
  #6 (permalink)  
Antiguo 11/01/2018, 02:24
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Abrir mas de un modal

Hola:

Veo absurdo cargar una librería para lo que podría resolverse con 4 líneas...

Por ejemplo para el primer botón podría ser este código:

Código:
document.getElementById("myBtn").onclick = function(){document.getElementById("myModal").style.display = "block"}
Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 15/01/2018, 06:08
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Abrir mas de un modal

Incluso se puede hacer sin js, solo con css

http://jsfiddle.net/3Vykc/
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}

Etiquetas: css, java, modal, scripts, ventana
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 10:55.