如何查看是否在转义时关闭了jquery对话框并执行了一些代码

Vic*_*kel 4 jquery-ui-dialog

我有一个jquery对话框,我需要在按Esc时执行some_code(),或者单击取消按钮.使用取消按钮,可轻松为取消按钮添加功能.

$( '#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" );                                                
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

但是如何在按ESC后执行some_code()?不能单击"确定"按钮调用此函数,因此我不能简单地将其放在close事件中.

Vic*_*kel 10

谷歌搜索后没有找到答案(这就是我问Q&A风格的原因)我开始研究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' )
    }
Run Code Online (Sandbox Code Playgroud)

希望这有助于某人,这里是小提琴:http://jsfiddle.net/hbrunar/MXk3a/2/