2012-04-16 3 views
0

ext7 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와 크롬

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 배열이 작동하지 않습니다 노력하고 있습니다.

관련 문제