2011-06-30 125 views
1

我正在处理extjs4。我有一个网格面板。在选择一排网格面板时,我创建了一个简单的窗口。我想在用户点击ESC时关闭它。如果用户单击窗口中的任何内容,然后单击ESC,则窗口关闭。但是如果用户还没有触摸窗口,ESC不会关闭窗口。 任何想法如何做到这一点?extjs关闭ESC上的Ext.window.Window

var win = Ext.create('Ext.window.Window', { 
        title: 'Details', 
        width: 400, 
         layout: 'fit', 
         iconCls: 'details-icon', 
         items: simple 
        }).show(); 
+0

的问题是在不封闭的片段。请发布。 –

+0

我没有任何关闭的片段。我认为问题在于,我点击它之前,焦点不在这个窗口中(这是ESC未关闭的原因)。我认为当你创建窗口并以这种方式显示时,焦点会自动移动到窗口,但显然需要一些额外的设置。 – nnahum

+0

我想如果你添加模态:真到你的窗口配置,它会像你期望的那样工作。 –

回答

3

也许这是赢得胜利。

或尝试使用此:

听窗口显示事件和键盘映射添加到文件:

var map = new Ext.util.KeyMap(Ext.getBody(), [{ 
    key: Ext.EventObject.ESC, 
    defaultEventAction: 'preventDefault', 
    scope: this, 
    fn: function(){win.close()} 
}]); 
+0

它工作完美!谢谢! – nnahum

+1

不错的一个! (+1),但它可能会失败(win.close上的JS错误),如果在创建win之前随时按ESC。也许在win.close之前添加if(win)? –

+0

注册显示,隐藏/关闭时取消注册 – atian25