2012-07-02 75 views
0

我的框架有一些帶有文本字段和按鈕的ExtJS彈出窗口。我需要在彈出窗口中實現Tab鍵的功能。使用標籤鍵我需要關注窗口中顯示的元素。但是在最後一個元素的tab中,焦點應該返回到彈出窗口中的第一個元素。ExtJs在彈出窗口中跳轉

任何API在ExtJS的幫助來實現這一功能呢?

+0

我該如何提高費率? – AJJ

+0

非常簡單,請查看您以前的問題的最佳答案。 – dbrin

+0

是這個接受率可以得到很好的答案? – AJJ

回答

0

得到這個在彈出的窗口中添加監聽到第一和最後一個元素得到解決。

var firstElement = Ext.getCmp('firstEl'); 
var lastElement = Ext.getCmp('lastEl'); 
Ext.EventManager.addListener(
    firstElement.el, 
    'keydown', 
    function(e){ 
    var key = e.getKey(); 
    var shiftKey = e.shiftKey; 
    if (shiftKey && key == e.TAB){ 
     e.stopEvent(); 
     lastElement.focus(true, 100); 
    } 
    } 
);  

Ext.EventManager.addListener(
    lastElement.el, 
    'keydown', 
    function(e){ 
    var key = e.getKey(); 
    var shiftKey = e.shiftKey; 
    if (!shiftKey && key == e.TAB){ 
     e.stopEvent(); 
     firstElement.focus(true, 100); 
    } 
    } 
); 
+0

嗨Jai ...你可以看看我上面發佈的更新。在某些情況下,問題仍然存在。 – arcamax

0

感謝您的解決方案。它解決了我們的問題...部分雖然。我需要一個或兩個建議來以通用的方式解決問題。

如果由於一些條件的最後一個按鈕/元素被禁用的。在這種情況下,該按鈕上的事件監聽器將不起作用。在我的情況下,在'second'最後一個元素上按'tab'會將焦點轉移到其他控件而不是第一個控件,因爲此特定按鈕沒有綁定事件偵聽器。

如果你有一個模式彈出窗口,是「屏蔽」背後的用戶界面,按下倒數第二個按鈕「選項卡」把焦點的窗口後面的一些控制。我相信這是一個ExtJS錯誤。

你可以做一個簡單的測試來驗證此行爲:

  1. 在主視圖
  2. 點擊該按鈕應該打開一個確認對話框(模式)
  3. 一旦窗口創建一個「按鈕」是多次打開的新聞標籤,並注意到焦點回到了首先啓動窗口的按鈕。

不知道如何解決這個問題呢?

我使用ExtJS的4.1.0

+0

如果最後一個元素被禁用,您可以爲第二個元素編寫偵聽器,並將第一個元素集中在窗口中。否則集中最後一個元素。我找不到任何通用的方法來處理這個問題。 secondLaseElement: 聽衆:{ keydown:function(e){ if(lastelement disabled?){ focus(firstelement); } else { focus(lastelement); }} } 感謝 – AJJ

+0

潔。我會嘗試看看我能否獲得通用的工作方式。我還將用ExtJS提交一個錯誤....重點放在模態窗口之外顯然是一個框架問題。 – arcamax

0

你可以寫倒數第二個元素的監聽器和集中的第一個元素在窗口中,如果最後一個元素被禁用。否則集中最後一個元素。我找不到任何通用的方法來處理這個問題。

secondLaseElement: 
    listeners: { 
    keydown: function(e) { 
     if (lastelement disabled?) { 
     focus(firstelement); 
     } else { 
     focus(lastelement); 
     } 
    } 
    }