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

时间:2014-01-19 15:59:43

标签: 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" );                                                
        }
    }
});

但是如何在按ESC后执行some_code()?不能单击“确定”按钮调用此函数,因此我不能简单地将其置于关闭事件中。

1 个答案:

答案 0 :(得分: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' )
    }

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