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 + -
显示快捷键?