我的框架有一些帶有文本字段和按鈕的ExtJS彈出窗口。我需要在彈出窗口中實現Tab鍵的功能。使用標籤鍵我需要關注窗口中顯示的元素。但是在最後一個元素的tab中,焦點應該返回到彈出窗口中的第一個元素。ExtJs在彈出窗口中跳轉
任何API在ExtJS的幫助來實現這一功能呢?
我的框架有一些帶有文本字段和按鈕的ExtJS彈出窗口。我需要在彈出窗口中實現Tab鍵的功能。使用標籤鍵我需要關注窗口中顯示的元素。但是在最後一個元素的tab中,焦點應該返回到彈出窗口中的第一個元素。ExtJs在彈出窗口中跳轉
任何API在ExtJS的幫助來實現這一功能呢?
得到這個在彈出的窗口中添加監聽到第一和最後一個元素得到解決。
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);
}
}
);
嗨Jai ...你可以看看我上面發佈的更新。在某些情況下,問題仍然存在。 – arcamax
感謝您的解決方案。它解決了我們的問題...部分雖然。我需要一個或兩個建議來以通用的方式解決問題。
如果由於一些條件的最後一個按鈕/元素被禁用的。在這種情況下,該按鈕上的事件監聽器將不起作用。在我的情況下,在'second'最後一個元素上按'tab'會將焦點轉移到其他控件而不是第一個控件,因爲此特定按鈕沒有綁定事件偵聽器。
如果你有一個模式彈出窗口,是「屏蔽」背後的用戶界面,按下倒數第二個按鈕「選項卡」把焦點的窗口後面的一些控制。我相信這是一個ExtJS錯誤。
你可以做一個簡單的測試來驗證此行爲:
不知道如何解決這個問題呢?
我使用ExtJS的4.1.0
你可以寫倒數第二個元素的監聽器和集中的第一個元素在窗口中,如果最後一個元素被禁用。否則集中最後一個元素。我找不到任何通用的方法來處理這個問題。
secondLaseElement:
listeners: {
keydown: function(e) {
if (lastelement disabled?) {
focus(firstelement);
} else {
focus(lastelement);
}
}
}
我該如何提高費率? – AJJ
非常簡單,請查看您以前的問題的最佳答案。 – dbrin
是這個接受率可以得到很好的答案? – AJJ