Как проверить, если пользователь закрыл диалоговое окно, нажав на крестик в диалоговом окне jquery UI - PullRequest
4 голосов
/ 01 декабря 2010

У меня есть два диалоговых окна.Пользователь выбирает какое-то значение в первом, и оно отражается в DOM страницы.Первое диалоговое окно закрывается, а другое отображается.Если пользователь нажимает на крестик в правом верхнем углу, чтобы закрыть диалоговое окно, я хочу отменить изменения, сделанные в предыдущем диалоговом окне.На кнопку ОК, я должен сделать некоторые вещи, установив значения.На этой кнопке я закрываю диалог.На закрытое событие, до сих пор у меня есть код для сброса формы.Но если пользователь отменяет диалоговое окно, как я узнаю, как было вызвано событие закрытия, т. Е. Нажатием кнопки «ОК» или кнопки «крестик»?

Ответы [ 4 ]

7 голосов
/ 01 декабря 2010

Вы можете найти эту кнопку «X» по классу, .ui-dialog-titlebar-close, а затем присоединить к ней обработчик click при создании диалога, например:

$("#test").dialog({
    //dialog options...
}).parent().find(".ui-dialog-titlebar-close").click(function() {
    alert("Closed by title bar X, clear the other form here");
});

Вы можете проверить это здесь .

3 голосов
/ 01 декабря 2010

Вы можете использовать beforeClose событие

1 голос
/ 30 июня 2016

Использование идентификатора модели

$('#myModalId').on('show.bs.modal', function (e) {
  // Do your operation
})

Использование класса режима

$('.myModalClass').on('show.bs.modal', function (e) {
  // Do your operation
})

Модель

<div class="modal fade myModalClass" id="myModalId" role="dialog">
    // your code
</div>

подробнее здесь http://getbootstrap.com/javascript/#modals

0 голосов
/ 20 апреля 2017

Я нашел решение здесь , полезное @ Vickel

close: function( event, ui ) {
//some_code();
if(event.originalEvent ){
    // triggered by clicking on dialog box X or pressing ESC
    // not triggered if a dialog button was clicked
    some_code();
}        
$(this ).dialog( 'destroy' )
}
...