? ? 用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)了
順便說一下,我用的是2.2版本的不知道3以上的版本keyup是不是有同樣的問題
?
更多文章、技術(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ì)您有幫助就好】元
