Extjs 在IE中选择全部+删除/退格后清除带有远程存储的组合框

Extjs 在IE中选择全部+删除/退格后清除带有远程存储的组合框,extjs,extjs4,Extjs,Extjs4,我有一个4.1版的ExtJS组合框,带有一个远程存储。当组合框清空时,需要清除组合框并存储 为此,我实现了一个清除组合框并存储在按键和更改事件上的函数,请参见下面的代码 但是,当用户选择“全部shift+home”(如果光标在末尾)或“shift+end”(如果光标在开头),然后按backspace/delete键时,组合框拒绝清空自身。在这种情况下,当组合框失去焦点时,它总是用最后选择的值填充自己。这只发生在我的客户使用的IE中 你知道如何防止组合框那样做吗 下面的代码片段: // clear

我有一个4.1版的ExtJS组合框,带有一个远程存储。当组合框清空时,需要清除组合框并存储

为此,我实现了一个清除组合框并存储在按键和更改事件上的函数,请参见下面的代码

但是,当用户选择“全部shift+home”(如果光标在末尾)或“shift+end”(如果光标在开头),然后按backspace/delete键时,组合框拒绝清空自身。在这种情况下,当组合框失去焦点时,它总是用最后选择的值填充自己。这只发生在我的客户使用的IE中

你知道如何防止组合框那样做吗

下面的代码片段:

// clearExistingInput function (called from combo box)
clearExistingInput: function(ths, newVal) {
    if(newVal === null){
        ths.store.removeAll();
        ths.clearValue();
    }
}

// combo box configuration
{
    labelAlign : 'right',
    xtype: 'combo',
    store: comboStore,
    filterOnLoad: true,
    typeAhead: true,
    hideTrigger:true,
    minChars :1,            
    size:15,
    queryDelay: 20, 
    queryCaching: false,
    // enable paging with width that fits the paging toolbar
    matchFieldWidth: false,
    listConfig: {
        width: 220,
        height: 300, 
        autoHeight: true
    },
    maxWidth: 35,
    pageSize: true,

    enableKeyEvents:true,
    listeners:{
        'keypress':function(ths,e){ 
            if (e.getKey() == e.DELETE || e.getKey() == e.BACKSPACE) {
                this.up('formFilter').clearExistingInput(ths, ths.value);
            }
         },
        'change': function(ths,newVal,OldVal,eOpts){
            this.up('formFilter').clearExistingInput(ths, newVal);
        }
    }
}

// combo box store
comboStore = Ext.create('Ext.data.Store', {
      pageSize: 10,
      autoLoad: false,
      proxy: {
            type: 'ajax',
            url : 'Service/data',
            reader: {
                type: 'json',
                root: 'data'
            }
        },
        fields: [
          {name: 'data', type : 'String'}
        ]
});

您是否尝试将forceSelection设置为false?组合的beforeBlur方法调用assertValue,如果forceSelection为true,则该方法将组合的值重置为lastSelection。根据Ext的文档,默认情况下它应该是false,但您可以检查它。是的,我已经尝试将forceSelection设置为false。没有调试代码,我真的猜不出为什么会发生这种情况。你发布的代码看起来不错。虽然这个.up'formFilter'.ClearExistingInpuths,但这个.value看起来有点可疑。如果要清除现有输入,那么ths.value是什么?为什么要传递它?ths.value是组合框的值。它被传递是因为我想在清除存储之前确保组合框是空的,这是必需的。如果clearExistingInput中的ths.clearValue使您感到不适-这部分看起来确实是多余的-我徒劳地尝试在我遇到问题的场景中不让组合框值返回。