關(guān)于ExtJS4.1:快捷鍵支持的問題
更新時間:2013年04月24日 09:18:54 作者:
本篇文章小編為大家介紹,關(guān)于ExtJS4.1 快捷鍵支持的問題。需要的朋友參考下
問題一個頁面有兩個面板,都有一個【添加(F2)】按鈕,如何做快捷鍵支持?圖片示意
/// <reference path="Ext/ext-all-debug-w-comments.js" />
Ext.onReady(function () {
var viewport = Ext.create('Ext.container.Viewport', {
layout: {
type: 'vbox',
align: 'stretch'
},
padding: 10,
items: [{
xtype: 'panel',
id: 'panelA',
title: '快捷鍵測試A',
tbar: [{
text: '添加(F2)'
}],
frame: true,
flex: 1,
html: '您好,這里顯示的表格或表單 。'
}, {
xtype: 'panel',
id: 'panelB',
title: '快捷鍵測試B',
tbar: [{
text: '添加(F2)'
}],
frame: true,
flex: 1,
html: '您好,這里顯示的表格或表單 。'
}]
});
Ext.create('Ext.util.KeyMap', {
target: 'panelA',
key: Ext.EventObject.F2,
fn: function (key, ev) {
alert('添加A');
ev.stopEvent();
return false;
}
});
Ext.create('Ext.util.KeyMap', {
target: 'panelB',
key: Ext.EventObject.F2,
fn: function (key, ev) {
alert('添加B');
ev.stopEvent();
return false;
}
});
});
實際結(jié)果
打開瀏覽器后直接按F2沒有效果;打開瀏覽器后用鼠標(biāo)點擊A或B后再按F2同樣沒有效果。
第二次實現(xiàn)
原來是div元素必須增加tabindex=0的屬性才行。
代碼示例
/// <reference path="Ext/ext-all-debug-w-comments.js" />
Ext.onReady(function () {
var viewport = Ext.create('Ext.container.Viewport', {
layout: {
type: 'vbox',
align: 'stretch'
},
padding: 10,
items: [{
xtype: 'panel',
id: 'panelA',
title: '快捷鍵測試A',
tbar: [{
text: '添加(F2)'
}],
frame: true,
flex: 1,
html: '您好,這里顯示的表格或表單 。',
autoEl: {
tag: 'div',
tabindex: 0
}
}, {
xtype: 'panel',
id: 'panelB',
title: '快捷鍵測試B',
tbar: [{
text: '添加(F2)'
}],
frame: true,
flex: 1,
html: '您好,這里顯示的表格或表單 。',
autoEl: {
tag: 'div',
tabindex: 0
}
}]
});
Ext.create('Ext.util.KeyMap', {
target: 'panelA',
key: Ext.EventObject.F2,
fn: function (key, ev) {
alert('添加A');
ev.stopEvent();
return false;
}
});
Ext.create('Ext.util.KeyMap', {
target: 'panelB',
key: Ext.EventObject.F2,
fn: function (key, ev) {
alert('添加B');
ev.stopEvent();
return false;
}
});
});
實際結(jié)果
打開瀏覽器后直接按F2沒有效果;打開瀏覽器后用鼠標(biāo)點擊A或B后再按F2就有效果了。
第三次實現(xiàn)
要解決打開瀏覽器之后不用點擊div就能識別快捷鍵,需要手動調(diào)用foucs()方法。
代碼示例
/// <reference path="Ext/ext-all-debug-w-comments.js" />
Ext.onReady(function () {
var viewport = Ext.create('Ext.container.Viewport', {
layout: {
type: 'vbox',
align: 'stretch'
},
padding: 10,
items: [{
xtype: 'panel',
id: 'panelA',
title: '快捷鍵測試A',
tbar: [{
text: '添加(F2)'
}],
frame: true,
flex: 1,
html: '您好,這里顯示的表格或表單 。',
autoEl: {
tag: 'div',
tabindex: 0
}
}, {
xtype: 'panel',
id: 'panelB',
title: '快捷鍵測試B',
tbar: [{
text: '添加(F2)'
}],
frame: true,
flex: 1,
html: '您好,這里顯示的表格或表單 。',
autoEl: {
tag: 'div',
tabindex: 0
}
}]
});
Ext.create('Ext.util.KeyMap', {
target: 'panelA',
key: Ext.EventObject.F2,
fn: function (key, ev) {
alert('添加A');
ev.stopEvent();
return false;
}
});
Ext.create('Ext.util.KeyMap', {
target: 'panelB',
key: Ext.EventObject.F2,
fn: function (key, ev) {
alert('添加B');
ev.stopEvent();
return false;
}
});
Ext.get('panelB').focus();
});
實際結(jié)果
打開瀏覽器后直接按F2有效果了;打開瀏覽器后用鼠標(biāo)點擊A或B后再按F2就有效果了。
第一次實現(xiàn)
感覺應(yīng)該很簡單,ExtJs提供了“Ext.util.KeyMap”,很容易做快捷鍵支持。
代碼示例
復(fù)制代碼 代碼如下:
/// <reference path="Ext/ext-all-debug-w-comments.js" />
Ext.onReady(function () {
var viewport = Ext.create('Ext.container.Viewport', {
layout: {
type: 'vbox',
align: 'stretch'
},
padding: 10,
items: [{
xtype: 'panel',
id: 'panelA',
title: '快捷鍵測試A',
tbar: [{
text: '添加(F2)'
}],
frame: true,
flex: 1,
html: '您好,這里顯示的表格或表單 。'
}, {
xtype: 'panel',
id: 'panelB',
title: '快捷鍵測試B',
tbar: [{
text: '添加(F2)'
}],
frame: true,
flex: 1,
html: '您好,這里顯示的表格或表單 。'
}]
});
Ext.create('Ext.util.KeyMap', {
target: 'panelA',
key: Ext.EventObject.F2,
fn: function (key, ev) {
alert('添加A');
ev.stopEvent();
return false;
}
});
Ext.create('Ext.util.KeyMap', {
target: 'panelB',
key: Ext.EventObject.F2,
fn: function (key, ev) {
alert('添加B');
ev.stopEvent();
return false;
}
});
});
實際結(jié)果
打開瀏覽器后直接按F2沒有效果;打開瀏覽器后用鼠標(biāo)點擊A或B后再按F2同樣沒有效果。
第二次實現(xiàn)
原來是div元素必須增加tabindex=0的屬性才行。
代碼示例
復(fù)制代碼 代碼如下:
/// <reference path="Ext/ext-all-debug-w-comments.js" />
Ext.onReady(function () {
var viewport = Ext.create('Ext.container.Viewport', {
layout: {
type: 'vbox',
align: 'stretch'
},
padding: 10,
items: [{
xtype: 'panel',
id: 'panelA',
title: '快捷鍵測試A',
tbar: [{
text: '添加(F2)'
}],
frame: true,
flex: 1,
html: '您好,這里顯示的表格或表單 。',
autoEl: {
tag: 'div',
tabindex: 0
}
}, {
xtype: 'panel',
id: 'panelB',
title: '快捷鍵測試B',
tbar: [{
text: '添加(F2)'
}],
frame: true,
flex: 1,
html: '您好,這里顯示的表格或表單 。',
autoEl: {
tag: 'div',
tabindex: 0
}
}]
});
Ext.create('Ext.util.KeyMap', {
target: 'panelA',
key: Ext.EventObject.F2,
fn: function (key, ev) {
alert('添加A');
ev.stopEvent();
return false;
}
});
Ext.create('Ext.util.KeyMap', {
target: 'panelB',
key: Ext.EventObject.F2,
fn: function (key, ev) {
alert('添加B');
ev.stopEvent();
return false;
}
});
});
實際結(jié)果
打開瀏覽器后直接按F2沒有效果;打開瀏覽器后用鼠標(biāo)點擊A或B后再按F2就有效果了。
第三次實現(xiàn)
要解決打開瀏覽器之后不用點擊div就能識別快捷鍵,需要手動調(diào)用foucs()方法。
代碼示例
復(fù)制代碼 代碼如下:
/// <reference path="Ext/ext-all-debug-w-comments.js" />
Ext.onReady(function () {
var viewport = Ext.create('Ext.container.Viewport', {
layout: {
type: 'vbox',
align: 'stretch'
},
padding: 10,
items: [{
xtype: 'panel',
id: 'panelA',
title: '快捷鍵測試A',
tbar: [{
text: '添加(F2)'
}],
frame: true,
flex: 1,
html: '您好,這里顯示的表格或表單 。',
autoEl: {
tag: 'div',
tabindex: 0
}
}, {
xtype: 'panel',
id: 'panelB',
title: '快捷鍵測試B',
tbar: [{
text: '添加(F2)'
}],
frame: true,
flex: 1,
html: '您好,這里顯示的表格或表單 。',
autoEl: {
tag: 'div',
tabindex: 0
}
}]
});
Ext.create('Ext.util.KeyMap', {
target: 'panelA',
key: Ext.EventObject.F2,
fn: function (key, ev) {
alert('添加A');
ev.stopEvent();
return false;
}
});
Ext.create('Ext.util.KeyMap', {
target: 'panelB',
key: Ext.EventObject.F2,
fn: function (key, ev) {
alert('添加B');
ev.stopEvent();
return false;
}
});
Ext.get('panelB').focus();
});
實際結(jié)果
打開瀏覽器后直接按F2有效果了;打開瀏覽器后用鼠標(biāo)點擊A或B后再按F2就有效果了。
相關(guān)文章
WebStorm中如何將自己的代碼上傳到github示例詳解
這篇文章主要介紹了WebStorm中如何將自己的代碼上傳到github,本文分步驟通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10JS實現(xiàn)區(qū)分中英文并統(tǒng)計字符個數(shù)的方法示例
這篇文章主要介紹了JS實現(xiàn)區(qū)分中英文并統(tǒng)計字符個數(shù)的方法,涉及JavaScript事件響應(yīng)、正則匹配及數(shù)值運算相關(guān)操作技巧,需要的朋友可以參考下2018-06-06用javascript修復(fù)瀏覽器中頭痛問題的方法整理篇[譯]
我們提倡無論何時都盡可能地使用CSS,這樣我們更容易取得成功.現(xiàn)在瀏覽器對CSS的支持已經(jīng)非常好,肯定足以讓你用來控制你的網(wǎng)頁布局與排版.但,即使如此,還是有某些頁面元素會在不同的瀏覽器下表現(xiàn)也不一樣.2008-11-11在for循環(huán)中l(wèi)ength值是否需要緩存
這篇文章主要介紹了在for循環(huán)中l(wèi)ength值是否需要緩存,需要的朋友可以參考下2015-07-07JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之二叉樹插入節(jié)點、生成二叉樹示例
這篇文章主要介紹了JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之二叉樹插入節(jié)點、生成二叉樹,結(jié)合實例形式較為詳細(xì)的分析了javascript二叉樹相關(guān)概念、定義、節(jié)點插入、遍歷輸出等相關(guān)操作技巧,需要的朋友可以參考下2019-02-02?js中toString()函數(shù)與valueOf()函數(shù)使用與區(qū)別
在等于運算符中,如果比較的內(nèi)容包含對象類型數(shù)據(jù),則會涉及隱式轉(zhuǎn)換,那么就會調(diào)用toString()函數(shù)和valueOf()函數(shù),本文主要介紹了?js中toString()函數(shù)與valueOf()函數(shù)使用與區(qū)別,感興趣的可以了解一下2022-04-04