0

extjs 3.4でbeforequery関数を使用してフィルターを使用しているときにIE6で問題が発生しました。これが、私のコードです。

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.IE6でクエリを/^[undefined]/として取得しています。

2.しかし、ChromeとFFクエリでは= / ^ [a-zA-Z0-9-。、:+ *()='&_] /

どんな助けでも大歓迎です。

前もって感謝します、

ラージ

4

1 に答える 1

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);
   }

このコードは正常に機能しています。IE6ではアレイが機能していません。

于 2012-04-17T05:12:52.417 に答える