Ver Mensaje Individual
  #5 (permalink)  
Antiguo 21/03/2010, 12:54
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 8 meses
Puntos: 20
Respuesta: Crear modal box con jquery y efecto fade in/out

Buenas,

Encontré un ejemplo más sencillo de implementar, funciona correctamente. Se abre el modal al pulsar el boton/enlace y no se cierra hasta que no pulsas el boton cerrar.

Quiero añadirle la funcionalidad de que si pulsan fuera del modal también se cierre igual que si pulsase el boton cerrar.

Pensaba que agregando las lineas comentadas tendría bastante, pero lo que consigo es que una vez se abre el modal se cierra automáticamente sin esperar respuesta del usuario :S

Código completo
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  4. <title>Modal Box With jQuery</title>
  5. <style type="text/css">
  6. body {
  7.     background:#fff;
  8.     font-family:Verdana, Arial, Helvetica, sans-serif;
  9.     color:white;
  10. }
  11.  
  12. a:link, a:visited, a:active {
  13.     background:red;
  14.     color:white;
  15.     text-decoration:none;
  16.     padding:3px;
  17. }
  18.  
  19. a:hover {
  20.     background:white;
  21.     color:red;
  22. }
  23.  
  24. #darken {
  25.     position:absolute;
  26.     top:0;
  27.     left:0;
  28.     width:100%;
  29.     height:100%;
  30.     display:none;
  31.     z-index:199;
  32.     background:black;
  33.     opacity:.5;
  34.     filter:Alpha(opacity=50); /* Transparency in IE */
  35. }
  36.  
  37. #modalBox {
  38.     position:absolute;
  39.     top:50%;
  40.     left:50%;
  41.     width:400px;
  42.     height:300px;
  43.     margin-left:-200px;
  44.     margin-top:-200px;
  45.     border:#ccc 10px solid;
  46.     padding:10px;
  47.     display:none;
  48.     background:white;
  49.     font-size:12px;
  50.     color:black;
  51.     z-index:200;
  52. }
  53. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
  54. <script type="text/javascript">
  55. $(function(){
  56.     $('#open').click(function(){
  57.         $('#darken').fadeIn('500');
  58.         $('#modalBox').fadeIn('500');
  59.     });
  60.  
  61.     $('#close').click(function(){
  62.         $('#modalBox').fadeOut('500');
  63.         $('#darken').fadeOut('500');
  64.     });
  65.    
  66.     /*$("body").click(function(){
  67.         $('#modalBox').fadeOut('500');
  68.         $('#darken').fadeOut('500');
  69.     });*/
  70.  
  71. });
  72. </head>
  73.  
  74.     <a href="#" id="open">Open modalBox</a>
  75.     <div id="modalBox">
  76.         <p>Donec porta magna ac quam. Sed mollis. Nunc ultricies commodo neque. Aliquam dapibus. Nulla gravida interdum tortor. In arcu. Pellentesque eu quam. Donec aliquam iaculis urna. Maecenas vel orci quis arcu vulputate cursus. Quisque lectus. Fusce ultricies orci at quam. Sed ut augue. </p>
  77.         <img src="http://path/to/some/image.jpg" alt="some image" />
  78.         <p><a href="#" id="close">Close modalBox</a></p>
  79.     </div><!-- end modalBox -->
  80.     <div id="darken"></div><!-- end darken -->
  81. </body>
  82.  
  83. </html>

¿Sabéis que me falta para conseguirlo?

Muchas gracias de antemano!