清除ExtJS组合框输入字段

时间:2011-01-14 08:48:13

标签: combobox extjs input clear expand

我有一个Ext.form.ComboBox,其中包含以下属性:

fieldLabel: 'Regiune',
valueField: 'id',
displayField: 'reg',
id: 'cbRegR',
typeAhead: true,
store: new Ext.data.JsonStore({...}),
mode: 'local',
emptyText: '',
listeners:{...}

问题是我必须在从下拉列表中选择一个值后手动删除组合框的输入字段才能查看所有列表项。问题是列表仅显示输入字段中以字母开头的项目。

如何清除展开下拉列表中的输入字段?我尝试了以下但是它不起作用:

listeners: { 'expand': function() { cbRegR.clearValue(); } }

似乎很容易,但对我来说却不是这样......有什么好主意吗?提前谢谢。

4 个答案:

答案 0 :(得分:3)

将配置属性添加到组合框

triggerAction: 'all'

可以做到这一点,无需注册扩展事件处理程序或清除组合框的值

答案 1 :(得分:1)

正如您所知,Ext JS ComboBox-es的内在行为是根据字段值过滤列表项。

您可以感知地覆盖expand()方法,在添加列表之前添加清除值。 EG:

Ext.override(Ext.form.ComboBox, {

    expand : function(){
        if(this.isExpanded() || !this.hasFocus){
            return;
        }
        //ADDITIONS HERE:
        this.clearValue();
        this.doQuery("", true);
        //ADDITIONS END HERE

        if(this.title || this.pageSize){
            this.assetHeight = 0;
            if(this.title){
                this.assetHeight += this.header.getHeight();
            }
            if(this.pageSize){
                this.assetHeight += this.footer.getHeight();
            }
        }

        if(this.bufferSize){
            this.doResize(this.bufferSize);
            delete this.bufferSize;
        }
        this.list.alignTo.apply(this.list, [this.el].concat(this.listAlign));

        // zindex can change, re-check it and set it if necessary
        this.list.setZIndex(this.getZIndex());
        this.list.show();
        if(Ext.isGecko2){
            this.innerList.setOverflow('auto'); // necessary for FF 2.0/Mac
        }
        this.mon(Ext.getDoc(), {
            scope: this,
            mousewheel: this.collapseIf,
            mousedown: this.collapseIf
        });
        this.fireEvent('expand', this);
    }

});

答案 2 :(得分:0)

展开事件是好事,但您必须小心范围。

listeners: {
 'expand': function() {
    cbRegR.clearValue(); 
 },
 scope:this
}

设置范围有帮助吗?

答案 3 :(得分:0)

使用cbRegR将无效,因为它是一个未定义的变量。使用

listeners: { 'expand': function() { Ext.getCmp('cbRegR').clearValue(); } }

或更复杂的方法:

listeners: { 'expand': function(self) { self.clearValue(); } }