我有一个带有远程存储的ExtJS组合框(版本4.1)。清除组合框并在组合框清空时存储。
为此,我实现了一个清除组合框并存储在按键上并更改事件的函数(参见下面的代码)。
但是,当用户选择全部时,组合框拒绝自行清空(如果光标位于末尾则为shift + home,如果光标位于开头,则为shift + end),然后按下退格键/删除键。在这种情况下,组合框总是在失去焦点时使用最后选择的值填充自身。这只发生在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'}
]
});