J'utilise le jquery-ui-dialog
plugin
Je cherche un moyen de rafraîchir la page lorsque, dans certaines circonstances, la boîte de dialogue est fermée.
Existe-t-il un moyen de capturer un événement de clôture à partir de la boîte de dialogue?
Je sais que je peux exécuter du code lorsque vous cliquez sur le bouton de fermeture, mais cela ne couvre pas la fermeture de l'utilisateur avec échappement ou le x dans le coin supérieur droit.
$('div#popup_content')
vrai? Par quoi devrais-je remplacer cela, en gardant à l'esprit que ma boîte de dialogue est ouverte comme cecijQuery.fn.dialog.open({})
$('body').on('dialogclose', '.ui-dialog', function(){...});
Je pense que vous pouvez également le faire lors de la création de la boîte de dialogue (copiée à partir d'un projet que j'ai réalisé):
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" } });
Remarque
close: CloseFunction
la source
var CloseFunction = function() { //Do your custom closing stuff here };
overlay
deux fois. Ce n'est pas nécessaire, non?$("#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'); } });
la source
$( "#dialogueForm" ).dialog({ autoOpen: false, height: "auto", width: "auto", modal: true, my: "center", at: "center", of: window, close : function(){ // functionality goes here } });
La propriété "close" de dialog donne l'événement close pour le même.
la source
Vous pouvez également essayer ceci
$("#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"); } } });
la source
C'est ce qui a fonctionné pour moi...
$('#dialog').live("dialogclose", function(){ //code to run on dialog close });
la source
Parce que personne n'a vraiment créé de réponse en utilisant.
on()
au lieu debind()
moi, j'ai décidé d'en créer un.$('div#dialog').on('dialogclose', function(event) { //custom logic fired after dialog is closed. });
la source
ajoutez l'option 'fermer' comme sous l'exemple et faites ce que vous voulez la fonction en ligne
close: function(e){ //do something }
la source
Si je comprends le type de fenêtre dont vous parlez, $ (window) .unload () (pour la fenêtre de dialogue) ne vous donnerait-il pas le hook dont vous avez besoin?
(Et si j'ai mal compris, et que vous parlez d'une boîte de dialogue créée via CSS plutôt que d'une fenêtre de navigateur pop-up, alors toutes les façons de fermer cette fenêtre sont des éléments pour lesquels vous pouvez enregistrer des gestionnaires de clics.)
Edit: Ah, je vois maintenant que vous parlez de dialogues jquery-ui, qui sont créés via CSS. Vous pouvez accrocher le X qui ferme la fenêtre en enregistrant un gestionnaire de clic pour l'élément avec la classe ui-dialog-titlebar-close .
Plus utile, peut-être, est-ce que vous vous dites comment résoudre cela rapidement. Lors de l'affichage de la boîte de dialogue, ouvrez simplement FireBug et inspectez les éléments qui peuvent fermer la fenêtre. Vous verrez instantanément comment ils sont définis et cela vous donne ce dont vous avez besoin pour enregistrer les gestionnaires de clics.
Donc, pour répondre directement à votre question, je pense que la réponse est vraiment "non" - il n'y a pas un événement proche que vous pouvez accrocher, mais "oui" - vous pouvez accrocher toutes les façons de fermer la boîte de dialogue assez facilement et obtenir ce que tu veux.
la source
Vous pouvez essayer le code suivant pour capturer l'événement de clôture pour n'importe quel élément: page, boîte de dialogue, etc.
$("#dialog").live('pagehide', function(event, ui) { $(this).hide(); });
la source