2012-04-12 4 views
1

私はコンボボックスをフィルタリングするためにlistner beforequeryを使用しています。フィルタリング中はすべて問題ありませんが、私は次のような問題に直面しています:extjsのonLoad()による自動選択問題

フィルターをかけるためにコンボボックスに希望の文字を入力すると、自動的に選択されます。新しい文字を入力する場合は、選択を削除するか、残りの文字が削除されています...なぜこの振る舞いを助けてください。

コード:フィルタリングする

xtype: 'combo', 
      fieldLabel: 'Label', 
      anchor: '100%', 
      enableKeyEvents: true, 
      allowBlank: false, 
      displayField: 'value', 
      store: 'level1Store', 
      lazyInit: false, 
      mode: 'local', 
      forceSelection: true, 
      disableKeyFilter: true, 
      editable: true, 
      triggerAction: 'all', 
      valueField: 'key', 
      name: 1, 
      ref: 'combo1', 
      id: 'field1' 

LISTNERコード:

Ext.getCmp('field1').addListener({ 
     beforequery: function (e) { 
      if (e.query && e.query.indexOf('?') != -1) { 
       e.cancel = true; 
       var query = new RegExp(String.format('^{0}', e.query.replace(/\?/g, '[A-Za-z0-9]'))); 
       this.onLoad(); 
       this.store.clearFilter(true); 
       this.store.filter(this.displayField, query); 
      } 
     } 
    }); 

答えて

1

あなたは2つのこと行うことができます。

1)カスタム必要なものと、このデフォルト動作をオーバーライドすることができます。

2)コンボのフォーカスイベントを聴いて、テキストの選択を解除することができます。