2012-04-16 10 views
0

extjs 3.4のbeforequery関数でフィルタを使用しているときにIE6の問題に直面しています。フィルターを使用したbeforequeryがIE6 extjsで動作しない

this.findById('field1').addListener({ 
     beforequery: function(e) { 
      var metadataStep = Ext.getCmp('step2'); 
      if (e.query && e.query.indexOf('?') != -1) { 
       var temp = ''; 
       for(var i=0;i<e.query.length;i++){ 
        temp = temp + '['+e.query[i]+ ']'; 
       } 
       e.cancel = true; 
       var query = new RegExp(String.format('^{0}',temp.replace(/\?/g, 'a-zA-Z0-9\-\.,:\+\*\(\)=\'&_'))); 
       if (combo.store.getCount() > 0 || combo.listEmptyText) { 
        combo.expand(); 
        combo.restrictHeight(); 
       } 
       this.store.clearFilter(true); 
       this.store.filter(this.displayField, query); 
      } 
     } 
    }); 

注:FFとChrome

1.Iでその作業は/^[未定義]として/ IE6でクエリを取得しています。クロム及びFFクエリで

2.But = /^[a-zA-Z0-9-.,:+*()=」& _]/

任意のヘルプは高く評価されます。事前に

おかげで、

ラジ

答えて

0
if (e.query && e.query.indexOf('?') != -1) { 
    e.query = String.format('^{0}', e.query.replace(/\+/g, '[\+]')); 
    e.query = String.format('^{0}', e.query.replace(/\(/g, '[\\(]')); 
    e.query = String.format('^{0}', e.query.replace(/\)/g, '[\\)]')); 
    e.query = String.format('^{0}', e.query.replace(/\*/g, '[\*]')); 
    e.query = String.format('^{0}', e.query.replace(/\./g, '[.]')); 
    e.cancel = true; 
    var query = new RegExp(String.format('^{0}',e.query.replace(/\?/g, '[a-zA-Z0-9\-\.,:\+\*\(\)=\'&_]'))); 
    if (combo.store.getCount() > 0 || combo.listEmptyText) { 
     combo.expand(); 
     combo.restrictHeight(); 
    } 
    combo.store.clearFilter(true); 
    combo.store.filter(combo.displayField, query); 
    } 

このコードはfine.In IE6配列が機能していない取り組んでいます。

関連する問題