2012-04-16 54 views
0

我在使用extjs 3.4中的beforequery函數使用過濾器時遇到了IE6的問題,這裏是我的代碼。beforequery with filter在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。

在Chrome和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陣列不工作。