historyclearablecombobox.js
来自「anewssystem新闻发布系统集成使用了spring hibernate f」· JavaScript 代码 · 共 138 行
JS
138 行
Ext.namespace("Ext.ux.form");Ext.ux.form.HistoryClearableComboBox = function(config) { Ext.ux.form.HistoryClearableComboBox.superclass.constructor.call(this, config); this.addEvents({ 'change' : true }); //this.store = new Ext.data.SimpleStore({ // fields: ['query'], // data: [] //}); this.historyRecord = Ext.data.Record.create([ {name: 'query', type: 'string'} ]); this.triggerConfig = { tag:'span', cls:'x-form-twin-triggers', style:'padding-right:2px', // padding needed to prevent IE from clipping 2nd trigger button cn:[{tag: "img", src: Ext.BLANK_IMAGE_URL, cls: "x-form-trigger", style:config.hideComboTrigger?"display:none":""}, {tag: "img", src: Ext.BLANK_IMAGE_URL, cls: "x-form-trigger x-form-clear-trigger", style: config.hideClearTrigger?"display:none":""} ]};};Ext.extend(Ext.ux.form.HistoryClearableComboBox, Ext.form.ComboBox, { //store: undefined, //displayField: 'query', //typeAhead: false, //mode: 'local', //triggerAction: 'all', //hideTrigger: false, //historyRecord: undefined, //maxInHistory: 10, //rememberOn: 'enter', getTrigger : function(index){ return this.triggers[index]; }, initTrigger : function(){ var ts = this.trigger.select('.x-form-trigger', true); this.wrap.setStyle('overflow', 'hidden'); var triggerField = this; ts.each(function(t, all, index){ t.hide = function(){ var w = triggerField.wrap.getWidth(); this.dom.style.display = 'none'; triggerField.el.setWidth(w-triggerField.trigger.getWidth()); }; t.show = function(){ var w = triggerField.wrap.getWidth(); this.dom.style.display = ''; triggerField.el.setWidth(w-triggerField.trigger.getWidth()); }; var triggerIndex = 'Trigger'+(index+1); if(this['hide'+triggerIndex]){ t.dom.style.display = 'none'; } t.on("click", this['on'+triggerIndex+'Click'], this, {preventDefault:true}); t.addClassOnOver('x-form-trigger-over'); t.addClassOnClick('x-form-trigger-click'); }, this); this.triggers = ts.elements; }, onTrigger1Click : function() {this.onTriggerClick()}, // pass to original combobox trigger handler onTrigger2Click : function() {this.reset()}, // clear contents of combobox onRender: function(ct) { Ext.ux.form.HistoryClearableComboBox.superclass.onRender.call(this, ct); }, initEvents : function() { Ext.ux.form.HistoryClearableComboBox.superclass.initEvents.call(this); this.el.on("keyup", this.onHistoryKeyUp, this); }, historyChange : function(value) { var value = this.getValue().replace(/^\s+|\s+$/g, ""); if (value.length==0) return; this.store.clearFilter(); var vr_insert = true; if (this.rememberOn=="all") { this.store.each(function(r) { if (r.data['query'].indexOf(value)==0) { // backspace vr_insert = false; return false; }else if (value.indexOf(r.data['query'])==0) { // forward typing this.store.remove(r); } }); } if (vr_insert==true) { this.store.each(function(r) { if (r.data['query']==value) { vr_insert = false; } }); } if (vr_insert==true) { var vr = new this.historyRecord({query: value}); this.store.insert(0, vr); } var ss_max = this.maxInHistory; if (this.store.getCount()>ss_max) { var ssc = this.store.getCount(); var overflow = this.store.getRange(ssc-(ssc-ss_max), ssc); for (var i=0; i<overflow.length; i++) { this.store.remove(overflow[i]); } } }, onHistoryKeyUp : function(e) { if ( (this.rememberOn=="enter" && e.getKey()==13) || (this.rememberOn=="all") ) { this.historyChange(this.getValue()); this.fireEvent('change', this.getValue()); } }, setValue : function(v) { Ext.ux.form.HistoryClearableComboBox.superclass.setValue.call(this, v); this.fireEvent('change', this.getValue()); }, clearValue : function() { this.setValue(""); }, EOJ : function(){}});
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?