2012-05-10 30 views
8

Tengo un diálogo modal que no se cierra cuando se hace clic en "guardar" o "cancelar". He comparado con jQuery UI's official demo page y no puedo encontrar por qué esto no estaría funcionando.Jquery dialog modal not closing

Aquí es lo que tengo:

$(function() { 
      $("#DetailsWindow").dialog({ 
       autoOpen: false, 
       resizable: false, 
       height: 500, 
       width: 600, 
       modal: true, 
       title: 'Appointment Details', 
       buttons: { 
        "Save": function() { 
         $(this).dialog("close"); 
        }, 
        "Cancel": function() { 
         $(this).dialog("close"); 
        } 
       } 
      }); 

      $('button').click(function() { 
       $("#DetailsWindow").dialog("open"); 
      }); 
     }); 

HTML:

<button>A button</button> 
     <div id="DetailsWindow"> 
      <h3>Title</h3> 
      <span>Some Text</span> 
     </div> 

Respuesta

15

Su consulta $('button') debe ser más restrictiva, de lo contrario, coincide con todos los <button> etiquetas en la página, incluyendo los que están dentro del cuadro de diálogo jQuery , haciendo que siga abriéndose.

que sugeriría la adición de una clase a su botón principal:

<button class="open-details">A button</button> 

Y luego cambia de JavaScript para:

$('button.open-details').click(function() { 
    $("#DetailsWindow").dialog("open"); 
}); 
+0

+1, este es el problema. El diálogo se está cerrando, y luego se volvió a abrir de inmediato, porque su controlador se ejecuta para los botones 'guardar' y 'cancelar' en el cuadro de diálogo. –

+1

Mi respuesta fue incorrecta, gracias @Rocket – MilkyWayJoe

+0

Citando el comentario de la respuesta (ahora eliminada): en realidad, es lo que piensas que es. Dentro de esas funciones, este es el elemento DOM al que llamaste .dialog. De los documentos (en 'Opciones'> 'botones (objeto)'): "El contexto de la devolución de llamada es el elemento de diálogo" – MilkyWayJoe

1

Trate de usar:

$(this).dialog('destroy').remove(); 

En lugar de:

$(this).dialog("close"); 
Cuestiones relacionadas