国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

關于ExtJS4.1:快捷鍵支持的問題

2019-11-20 22:46:52
字體:
來源:轉載
供稿:網友
問題一個頁面有兩個面板,都有一個【添加(F2)】按鈕,如何做快捷鍵支持?圖片示意

第一次實現
感覺應該很簡單,ExtJs提供了“Ext.util.KeyMap”,很容易做快捷鍵支持。
代碼示例

復制代碼 代碼如下:

/// <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;
         }
     });
 });    

實際結果

打開瀏覽器后直接按F2沒有效果;打開瀏覽器后用鼠標點擊A或B后再按F2同樣沒有效果。
第二次實現
原來是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;
         }
     });
 });

實際結果
打開瀏覽器后直接按F2沒有效果;打開瀏覽器后用鼠標點擊A或B后再按F2就有效果了。

第三次實現
要解決打開瀏覽器之后不用點擊div就能識別快捷鍵,需要手動調用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();
 });

實際結果
打開瀏覽器后直接按F2有效果了;打開瀏覽器后用鼠標點擊A或B后再按F2就有效果了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 津南区| 措勤县| 浦城县| 砀山县| 昭觉县| 吉水县| 沁水县| 易门县| 巨鹿县| 新巴尔虎右旗| 东乌珠穆沁旗| 莎车县| 离岛区| 南丹县| 龙井市| 万盛区| 仪陇县| 临湘市| 阳谷县| 松溪县| 类乌齐县| 盐边县| 晋州市| 株洲市| 彩票| 蒙阴县| 赫章县| 温泉县| 博野县| 神池县| 乳源| 抚宁县| 延长县| 旺苍县| 句容市| 长治市| 兰西县| 平安县| 八宿县| 徐州市| 丹寨县|