我正在开发一个项目,该项目需要我在用户键入时过滤组合框。我已经设置好了,所以我有一个应该是通用组合框函数的辅助函数:
filterComboGeneral: function(combo, filterfield)
{
// try
// {
console.log(combo.getXType());
var passpatt = '^' + combo.getValue().toLowerCase();
if (combo.store.isFiltered())
{
combo.store.clearFilter();
}
combo.store.filterBy(function(record) {
var pattern = new RegExp(passpatt);
var teststr = record.get(filterfield).toLowerCase();
var retval = pattern.test(teststr);
return retval;
});
// }
// catch (e) {
// console.log("null was encountered in text box. Moving on");
// }
}
请忽略我评论他们的评论 try-catch 以检查实际抛出的异常。
然后我有一个调用这个通用函数的特定函数:
filterMainCombo: function(combo, release)
{
this.filterComboGeneral(combo, "name");
}
然后我有两个组合框。第一个在视图文件中定义:
{
xtype: 'combobox',
itemId: 'scriptfilt',
store: {
type: 'scriptstore'
},
valueField: 'id',
displayField: 'name',
typeAhead: true,
autoSelect: true,
minChars: 1,
typeAheadDelay: 0,
enableKeyEvents: true,
listeners: {
keyUp: 'filterMainCombo'
}
}
这个组合框工作得很好。
然后我有另一个在我的控制器文件中声明为变量(顺便说一下,我的过滤器函数在同一个文件中):
var scriptcb = Ext.create('Ext.form.ComboBox', {
fieldLabel: 'Script',
store: scrstore,
displayField: 'name',
valueField: 'id',
forceSelection: true,
itemId: 'scriptcombo',
typeAhead: true,
autoSelect: true,
minChars: 1,
typeAheadDelay: 0,
enableKeyEvents: true,
listeners: {
keyUp: 'filterMainCombo'
}
});
然后这个组合框被添加到显示的窗口中。但是由于某种原因,每当我在此处描述的第二个框中键入实际值时,都会触发 keyUp 事件,但该值为 null 并且不知道为什么。