`
zha_zi
  • 浏览: 594060 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Extjs keyup事件bug修正

阅读更多

    用extjs做项目大部分都会用到一个组件combobox去实现联想框的功能,如果实现这个功能肯定是要用到事件机制的keyup

extjs为我们提供的keyup的事件,但是前提是要开启enableKeyEvents:true,打开键盘事件

   非常奇怪的现象出现了,在监听其中测试事件,keyup始终就是没法fire ,同样的配置下去测试keydown,keypress都可以正确的fire ,没法获得keyup的事件就没有办法及时的获取文本框 的内容,这样的话如何实现联想框,这个问题困扰了我整整一天太悲剧了,最后在看一个国外网友的一段代码修改的extjs的keyup的bug

  Ext.override(Ext.form.ComboBox, {
            initEvents : function(){
                Ext.form.ComboBox.superclass.initEvents.call(this);
                this.keyNav = new Ext.KeyNav(this.el, {
                    "up" : function(e){
                        this.inKeyMode = true;
                        this.selectPrev();
                    },
                    "down" : function(e){
                        if(!this.isExpanded()){
                            this.onTriggerClick();
                        }else{
                            this.inKeyMode = true;
                            this.selectNext();
                        }
                    },
                    "enter" : function(e){
                        this.onViewClick();
                        this.delayedCheck = true;
                        this.unsetDelayCheck.defer(10, this);
                    },
                    "esc" : function(e){
                        this.collapse();
                    },
                    "tab" : function(e){
                        this.onViewClick(false);
                        return true;
                    },
                    scope : this,
                    doRelay : function(foo, bar, hname){
                        if(hname == 'down' || this.scope.isExpanded()){
                           return Ext.KeyNav.prototype.doRelay.apply(this, arguments);
                        }
                        return true;
                    },
                    forceKeyDown : true
                });
                this.queryDelay = Math.max(this.queryDelay || 10,
                        this.mode == 'local' ? 10 : 250);
                this.dqTask = new Ext.util.DelayedTask(this.initQuery, this);
                if(this.typeAhead){
                    this.taTask = new Ext.util.DelayedTask(this.onTypeAhead, this);
                }
                if((this.editable !== false) && !this.enableKeyEvents) {
                    this.el.on("keyup", this.onKeyUp, this);
                }
                if(this.forceSelection){
                    this.on('blur', this.doForce, this);
                }
            },
            onKeyUp : function(e){
                if(this.editable !== false && !e.isSpecialKey()){
                    this.lastKey = e.getKey();
                    this.dqTask.delay(this.queryDelay);
                }
                Ext.form.ComboBox.superclass.onKeyUp.call(this, e);
            }
        });

     没想到keyup还真的实现了

最终的联想效果如下图

顺便说一下,我用的是2.2版本的不知道3以上的版本keyup是不是有同样的问题

 

  • 大小: 52.8 KB
2
0
分享到:
评论
1 楼 liu_ll 2012-12-01  
问题解决了~~

相关推荐

    extjs4.1修改bug版本

    extjs4.1修改bug版本,已修改数字、日期等多个控件的问题

    extjs bug 图标大全

    例如,一个bug图标可能被命名为`x-fa fa-bug`,其中`x-fa`是ExtJS对FontAwesome库的引用,`fa-bug`则是FontAwesome中的bug图标代码。图标可以被添加到按钮、工具栏、面板标题等各个组件上,以增强用户体验和交互性。...

    Extjs源码之--Ext事件机制/继承关系

    在EXTJS这个强大的JavaScript框架中,事件机制是其核心组件之一,它允许组件之间进行通信和交互。在“Extjs源码之--Ext事件机制/继承关系”中,我们将深入探讨EXTJS如何处理事件以及其类层次结构。EXTJS的事件处理...

    ExtJS3.3版本的BUG

    这可能是由于ExtJS框架内部实现的变化或者某个特定版本中的Bug导致的。 #### 2. 解决方案建议 为了修复这个问题,可以考虑以下几种解决方案: - **修改代码逻辑**:尝试使用`this.up('window')`或`this.ownerWindow...

    EXTJS事件实例源码

    1. **事件监听与触发**:EXTJS中的每个组件都拥有自己的事件系统,可以通过`addListener`(或简写`on`)方法来监听事件,`fireEvent`方法来触发事件。例如: ```javascript var button = Ext.create('Ext.button....

    ExtJs GridPanel双击事件获得双击的行

    本篇文章将深入讲解如何在ExtJs GridPanel中实现双击事件,并获取双击的行以及选中的复选框状态。 首先,我们要了解GridPanel的基本结构。GridPanel由Store(数据存储)和ColumnModel(列模型)组成,它们定义了...

    ExtJS 事件笔记

    本篇笔记将深入探讨ExtJS的事件处理,包括事件登记、事件对象、this的作用域以及ExtJS特有的事件管理方式。 1. **事件登记**: - **内联式登记**:在HTML元素中直接定义事件处理函数,如`onClick="popUp()"`。这种...

    ExtJS 事件处理 动态载入

    在深入探讨事件处理和动态载入这两个主题之前,我们先简单了解一下ExtJS的基础。 ExtJS 提供了一个完整的框架,包括丰富的UI组件、数据绑定机制、布局管理以及强大的事件模型。这使得开发者能够创建功能丰富的Web...

    Extjs事件和模板

    在EXTJS这个强大的JavaScript框架中,事件处理和模板机制是两个至关重要的概念,它们极大地提升了开发者构建用户界面的效率和代码的可维护性。本文将深入探讨EXTJS中的事件系统和模板机制,以及如何在实际开发中应用...

    Extjs grid 中文排序问题修正

    本教程将详细讲解如何修正EXTJS Grid中的中文排序问题。 首先,我们需要理解EXTJS Grid的排序原理。EXTJS Grid的排序功能是基于其内部的Store对象实现的,Store中的每条记录都有一个对应的sortField和sortDir属性,...

    extjs流程界面设计器参考_ExtJS工作流设计器_extjs工作流_extjs_

    ExtJS的事件系统使得绑定和处理这些事件变得简单。 7. **可视化编辑**:为了提高用户体验,设计器通常会提供撤销/重做、选择、复制/粘贴等可视化编辑功能。这些可以通过ExtJS的命令模式和组件方法实现。 8. **验证...

    extjs -all 修正版

    extjs 所带extjs-all文件进行了修正。

    EXTJS 样式 修正 css 可以调整extjs里面的字体大小

    EXTJS 样式 extjs字体大小 可以轻松在这个CSS文件里面调整EXTJS插件的字体大小,对这个有需求的同志们有福了!

    信息提示小窗口Notification-ExtJS2.0.2(修正版)

    标题中的“信息提示小窗口Notification-ExtJS2.0.2(修正版)”指的是一个基于ExtJS 2.0.2框架的用户界面组件,它主要用于实现类似qwikiOffice中的右下角信息提示功能。这个组件是原版Notification的一个改进版本,...

    Extjs 重写Panel添加click事件

    然而,有时我们需要对Panel进行自定义,例如添加或修改事件处理。在这个场景中,我们将深入探讨如何在Ext JS中重写Panel并为其添加click事件。 首先,理解Panel的基本结构是至关重要的。一个Panel由多个部分组成,...

    Extjs扩展DateTimeField时间初始化及点击日期显示Bug

    本文将深入探讨“Extjs扩展DateTimeField时间初始化及点击日期显示Bug”这一主题,帮助开发者解决实际开发中遇到的难题。 DateTimeField是EXTJS中用于处理日期和时间选择的组件,它允许用户同时选择日期和时间,...

    extJs3升级extjs4方案

    ExtJS3 升级到 ExtJS4 方案 ExtJS3 升级到 ExtJS4 需要修改大量代码,主要是因为 ExtJS4 配备了一类新的系统,不向后兼容。在 ExtJS 3 里生成表的几个框架组件,ExtJS4 大多生成 div,这使得 CSS classes 将会失败...

    EXTJS中基于事件的编程探究.pdf

    "EXTJS中基于事件的编程探究" EXTJS是一款基于JavaScript的开源编程框架,由Sencha公司推出,目前版本已更新至4.0。EXTJS具有面向对象编程、完善的事件监听与响应机制、跨浏览器支持、丰富的可扩展控件支持、高效...

    extjs4.2 desktop 拓展

    此外,描述中提到的“修正ExtJS 4.2的一些bug”,意味着开发者对原始库进行了优化,解决了可能影响性能或稳定性的已知问题。这可能涉及到事件处理、渲染机制、数据绑定等方面,以提高整体的健壮性和可靠性。 最后,...

    Extjs 4.11 重写 Panel 添加 click事件

    总结起来,重写ExtJS 4.11 Panel的`click`事件涉及到创建Panel实例,添加事件监听器,以及可能的重写行为。理解并熟练运用这些方法将使你能够更灵活地定制和控制Panel的行为,从而提升应用的用户体验。通过深入学习...

Global site tag (gtag.js) - Google Analytics