2011-06-30 127 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