日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Extjs keyup事件bug修正

系統(tǒng) 2084 0

? ? 用extjs做項(xiàng)目大部分都會(huì)用到一個(gè)組件combobox去實(shí)現(xiàn)聯(lián)想框的功能,如果實(shí)現(xiàn)這個(gè)功能肯定是要用到事件機(jī)制的keyup

extjs為我們提供的keyup的事件,但是前提是要開啟enableKeyEvents:true,打開鍵盤事件

?? 非常奇怪的現(xiàn)象出現(xiàn)了,在監(jiān)聽其中測試事件,keyup始終就是沒法fire ,同樣的配置下去測試keydown,keypress都可以正確的fire ,沒法獲得keyup的事件就沒有辦法及時(shí)的獲取文本框 的內(nèi)容,這樣的話如何實(shí)現(xiàn)聯(lián)想框,這個(gè)問題困擾了我整整一天太悲劇了,最后在看一個(gè)國外網(wǎng)友的一段代碼修改的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還真的實(shí)現(xiàn)了

最終的聯(lián)想效果如下圖
Extjs keyup事件bug修正

順便說一下,我用的是2.2版本的不知道3以上的版本keyup是不是有同樣的問題

?

Extjs keyup事件bug修正


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 周口市| 安龙县| 乐安县| 建宁县| 深水埗区| 霍山县| 利川市| 建阳市| 青浦区| 阿勒泰市| 丹东市| 民勤县| 保康县| 鞍山市| 万山特区| 安化县| 英超| 湄潭县| 铁岭县| 凌云县| 托克逊县| 汝州市| 布尔津县| 依兰县| 高青县| 佛冈县| 八宿县| 五家渠市| 巩留县| 南京市| 依安县| 屯留县| 汽车| 渭南市| 泽州县| 湄潭县| 东至县| 谢通门县| 嘉黎县| 福泉市| 宝应县|