2014-01-19 3 views
1

У меня есть диалоговое окно jquery, и мне нужно выполнить some_code(), когда я нажимаю Esc или кнопку отмены. С помощью кнопки отмены можно легко добавить функцию к кнопке отмены.Как узнать, был ли закрыт диалог jquery при побеге и выполнить код

$('#mydialog').dialog({ 

    closeOnEscape: true, 

    close: function(event, ui) { 
     //some_code(); 
     $(this).dialog('destroy') 
     }, 

    buttons: { 
     "OK" : function() { 
      $(this).dialog("close"); 
     }, 
     "Cancel" : function() { 
      some_code(); 
      $(this).dialog("close");             
     } 
    } 
}); 

Но как я могу выполнить some_code() после нажатия ESC? Эта функция не должна называться нажатием кнопки OK, поэтому я не могу просто поместить ее в событие закрытия.

ответ

7

После прибегая к помощи вокруг, не находя ответа (и именно поэтому я задал вопрос Q & тиль) Я начал смотреть в close: function(event, ui) части и нашли решение с помощью event.originalEvent

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') 
    } 

надеюсь, что это поможет кому-то, вот fiddle: http://jsfiddle.net/hbrunar/MXk3a/2/

+0

Отлично, можете ли вы разместить JSFiddle? –

+0

http://jsfiddle.net/hbrunar/MXk3a/1/ – Vickel

+0

Спасибо, хороший учебник ... –