Захват события закрытия диалогового окна
Я использую диалог из jquery-ui.
Я ищу способ обновить страницу, когда в некоторых случаях, когда диалог закрыт.
Есть ли способ захватить событие закрытия из диалогового окна?
Я знаю, что могу запускать код при нажатии кнопки закрытия, но это не распространяется на закрытие пользователя с помощью escape или x в верхнем правом углу.
Ответы
Ответ 1
Я нашел его!
Вы можете поймать событие закрытия, используя следующий код:
$('div#popup_content').on('dialogclose', function(event) {
alert('closed');
});
Очевидно, я могу заменить предупреждение тем, что мне нужно сделать.
Изменить: По состоянию на JQuery 1.7, bind() стал включен()
Ответ 2
Я считаю, что вы также можете сделать это, создавая диалог (скопированный из проекта, который я сделал):
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"
}
});
Примечание close: CloseFunction
Ответ 3
$("#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');
}**
});
Ответ 4
$( "#dialogueForm" ).dialog({
autoOpen: false,
height: "auto",
width: "auto",
modal: true,
my: "center",
at: "center",
of: window,
close : function(){
// functionality goes here
}
});
"закрыть" свойство диалога дает событие закрытия для того же самого.
Ответ 5
U также может попробовать это
$("#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");
}
}
});
Ответ 6
Это то, что сработало для меня...
$('#dialog').live("dialogclose", function(){
//code to run on dialog close
});
Ответ 7
Как и в jQuery 1.7, метод .on() является предпочтительным методом привязки обработчиков событий к документу.
Поскольку никто не создал ответ с использованием. on()
вместо bind()
, я решил создать его.
$('div#dialog').on('dialogclose', function(event) {
//custom logic fired after dialog is closed.
});
Ответ 8
Если я понимаю тип окна, о котором вы говорите, не будет $(window).unload() (для диалогового окна) дать вам необходимый вам крючок?
(И если я неправильно понял, и вы говорите о диалоговом окне, создаваемом с помощью CSS, а не всплывающем окне браузера, то all способы закрытия этого окна - это элементы, которые вы могли бы зарегистрировать для кликов для.)
Изменить: Ах, теперь я говорю о диалоговом окне jquery-ui, который создается через CSS. Вы можете подключить X, который закрывает окно, зарегистрировав обработчик кликов для элемента с классом ui-dialog-titlebar-close.
Возможно, более полезно, если вы расскажете, как быстро это понять. Показывая диалог, просто откройте FireBug и Inspect элементы, которые могут закрыть окно. Вы сразу увидите, как они определены, и это дает вам то, что вам нужно для регистрации обработчиков кликов.
Поэтому, чтобы ответить на ваш вопрос, я считаю, что ответ действительно "нет" - нет закрытого события, которое вы можете подключить, но "да" - вы можете подключить все способы достаточно легко закрыть диалоговое окно и получить что вы хотите.
Ответ 9
добавить параметр "закрыть", как в примере, и сделать то, что вы хотите встроенной функции
close: function(e){
//do something
}
Ответ 10
Вы можете попробовать следующий код для захвата события закрытия для любого элемента: страницы, диалога и т.д.
$("#dialog").live('pagehide', function(event, ui) {
$(this).hide();
});