Frage

Ich bin mit dem jquery-ui-dialog plugin

Ich bin auf der Suche für die Weg zu aktualisieren die Seite, wenn in einige Umständen, wenn das Dialogfeld geschlossen ist.

Gibt es eine Möglichkeit, zu erfassen close-Ereignis aus dem dialog?

Ich weiß, ich kann code ausführen, wenn Sie die schließen-Schaltfläche geklickt wird, aber das deckt nicht das der Benutzer schließen mit escape oder dem x in der oberen rechten Ecke.

War es hilfreich?

Lösung

Ich habe es gefunden!

Sie können das close-Ereignis mit dem folgenden Code fangen:

 $('div#popup_content').on('dialogclose', function(event) {
     alert('closed');
 });

Natürlich kann ich die Warnung ersetzen, was auch immer ich tun muss.
Edit: Ab JQuery 1.7, die bind () hat sich auf ()

Andere Tipps

Ich glaube, Sie es auch tun können, während Sie den Dialog zu schaffen (aus einem Projekt kopiert ich):

dialog = $('#dialog').dialog({
    modal: true,
    autoOpen: false,
    width: 700,
    height: 500,
    minWidth: 700,
    minHeight: 500,
    position: ["center", 200],
    close: CloseFunction,
    overlay: {
        opacity: 0.5,
        background: "black"
    }
});

Hinweis close: CloseFunction

$("#dialog").dialog({
autoOpen: false,
resizable: false,
width: 400,
height: 140,
modal: true, 
buttons: {
  "SUBMIT": function() { 
    $("form").submit();
  }, 
  "CANCEL": function() { 
    $(this).dialog("close");
  } 
},
**close: function() {
  alert('close');
}**
});
$( "#dialogueForm" ).dialog({
              autoOpen: false,
              height: "auto",
              width: "auto",
              modal: true,
                my: "center",
                at: "center",
                of: window,
              close : function(){
                  // functionality goes here
              }  
              });

"close" Eigenschaft Dialog bietet das enge Ereignis für das gleiche.

U kann auch versuchen, diese

$("#dialog").dialog({
            autoOpen: false,
            resizable: true,
            height: 400,
            width: 150,
            position: 'center',
            title: 'Term Sheet',
            beforeClose: function(event, ui) { 
               console.log('Event Fire');
            },
            modal: true,
            buttons: {
                "Submit": function () {
                    $(this).dialog("close");
                },
                "Cancel": function () {
                    $(this).dialog("close");
                }
            }
        });

Das ist was für mich gearbeitet ...

$('#dialog').live("dialogclose", function(){
   //code to run on dialog close
});
  

Wie von jQuery 1.7, die .auf () Methode ist die bevorzugte Methode für die zu einem Dokument Event-Handler zu befestigen.

Weil eigentlich niemand eine Antwort erstellt mit der Verwendung von .on() statt bind() habe ich beschlossen, eine erstellen.

$('div#dialog').on('dialogclose', function(event) {
     //custom logic fired after dialog is closed.  
});

hinzufügen Option ‚Schließen‘ wie unter Probe und das tun, was Sie wollen Inline-Funktion

close: function(e){
    //do something
}

Wenn ich das Verständnis der Art der Fenster, Sie reden nicht, $(Fenster).unload() (für dialog) geben Sie den Haken, die Sie benötigen?

(Und wenn ich das falsch verstanden, und du redest über ein Dialogfenster über CSS statt einer pop-up-browser-Fenster, dann alle die Wege zu schließen, die Fenster sind Elemente, die Sie könnte klicken Sie auf registrieren für Linkshänder.)

Edit: Ah, ich sehe, jetzt sprechen Sie über jquery-ui-Dialoge, die per CSS.Sie können Haken die X das schließt das Fenster, durch Registrierung einen click-Ereignishandler für das element mit der Klasse ui-dialog-titlebar-close.

Mehr nützliche, vielleicht ist Sie Ihnen sagen, wie Sie herausfinden schnell.Während der Anzeige der dialog -, nur pop öffnen Sie FireBug und Prüfen die Elemente, die können das Fenster schließen.Sie werden sofort sehen, wie Sie definiert sind, und das gibt, was Sie brauchen, zu registrieren, klicken Sie auf Handler.

Also, um direkt deine Frage zu beantworten, ich glaube, die Antwort ist wirklich "Nein" - es gibt nicht ein Ereignis schließen Sie Haken, aber "ja" - Sie können Haken Sie alle Möglichkeiten, um das Dialogfeld zu schließen ziemlich einfach und bekommen, was Sie wollen.

Sie können versuchen, den folgenden Code, um die Abschlussveranstaltung für jedes Element für die Erfassung. Seite, Dialog usw.

$("#dialog").live('pagehide', function(event, ui) {
      $(this).hide();
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top