源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

关于ExtJS4.1:快捷键支持的问题

  • 时间:2022-06-17 20:33 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:关于ExtJS4.1:快捷键支持的问题
问题一个页面有两个面板,都有一个【添加(F2)】按钮,如何做快捷键支持?图片示意 [img]http://files.jb51.net/file_images/article/201304/201304240909424.png[/img] [b]第一次实现 [/b][b]感觉应该很简单,ExtJs提供了“Ext.util.KeyMap”,很容易做快捷键支持。 [/b]代码示例
[u]复制代码[/u] 代码如下:
/// <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同样没有效果。 [b]第二次实现 [/b]原来是div元素必须增加tabindex=0的属性才行。 代码示例
[u]复制代码[/u] 代码如下:
/// <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就有效果了。 [b]第三次实现 [/b]要解决打开浏览器之后不用点击div就能识别快捷键,需要手动调用foucs()方法。 代码示例
[u]复制代码[/u] 代码如下:
/// <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就有效果了。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部