jquery-ui-diálogo - Como gancho em diálogo próximo evento
-
05-07-2019 - |
Pergunta
Eu estou usando o jquery-ui-dialog
plugin
Estou procurando por forma a atualizar a página quando, em algumas circunstâncias, quando a caixa de diálogo é fechada.
Existe uma maneira de capturar um evento fechar a caixa de diálogo?
Eu sei que pode executar código quando o próximo botão é clicado, mas que não cobre o usuário fechar com o escape ou no x no canto superior direito.
Solução
Eu encontrei-o!
Você pode pegar o evento close usando o seguinte código:
$('div#popup_content').on('dialogclose', function(event) {
alert('closed');
});
Obviamente, eu posso substituir o alerta com o que eu preciso fazer.
Outras dicas
Eu acredito que você também pode fazê-lo ao criar o diálogo (copiado de um projeto que eu fiz):
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"
}
});
Nota 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
}
});
propriedade "perto" de diálogo dá o evento perto para o mesmo.
U também pode tentar este
$("#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");
}
}
});
Isto é o que funcionou para mim ...
$('#dialog').live("dialogclose", function(){
//code to run on dialog close
});
A partir de 1,7 jQuery, o .on () método é o método preferido para a fixação de manipuladores de eventos para um documento.
Porque ninguém realmente criado uma resposta com o uso .on()
vez de bind()
eu decidi criar um.
$('div#dialog').on('dialogclose', function(event) {
//custom logic fired after dialog is closed.
});
adicionar a opção 'fechar' como sob amostra e fazer o que quiser função inline
close: function(e){
//do something
}
Se eu estou entendendo o tipo de janela que você está falando, não $(window).descarregar (a) (para a janela de diálogo) dar-lhe o gancho que você precisa?
(E se eu mal entendido, e você está falando sobre uma caixa de diálogo feita através de CSS em vez de uma janela de pop-up janela do navegador e, em seguida, todos as maneiras de fechar a janela são elementos que você pode registrar clique em mão para.)
Editar: Ah, agora eu vejo que você está falando sobre jquery-ui caixas de diálogo, que são feitas através de CSS.Você pode ligar o X que fecha a janela de registrar um manipulador de clique para o elemento com a classe interface do usuário-caixa de diálogo-título-fechar.
Mais útil, talvez, é que você pode dizer-lhe como descobrir isso rapidamente.Ao exibir a caixa de diálogo, basta abrir o FireBug e Inspecionar os elementos que podem fechar a janela.Você vai ver como eles são definidos e que lhe dá o que você precisa para registrar os manipuladores de cliques.
Assim diretamente para responder sua pergunta, eu acredito que a resposta seja "não" - não é não é um evento fechado você pode ligar, mas "sim" - você pode ligar todas as maneiras para fechar a caixa de diálogo com bastante facilidade e obter o que deseja.
Você pode tentar o seguinte código para capturar o evento de encerramento para qualquer item:. Página, diálogo etc
$("#dialog").live('pagehide', function(event, ui) {
$(this).hide();
});