0

我正在开发一个项目,该项目需要我在用户键入时过滤组合框。我已经设置好了,所以我有一个应该是通用组合框函数的辅助函数:

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 并且不知道为什么。

4

0 回答 0