1

オートコンプリート機能を実装するために、値をフィルタリングする次の関数があります。

 store.filter(new Ext.util.Filter({
    filterFn: function (object) {
        var match = false;
        Ext.Object.each(object.data, function (property, value) {
        match = match || value.match(Ext.getCmp('search_input_text').getValue());

        });
        return match;
      }

大文字と小文字の両方が同じになるように、大文字と小文字を区別しないようにする必要があります。

value.match(Ext.getCmp('search_input_text').getValue());

LIKESQLのようなもの。どうやってやるの ?

4

3 に答える 3

0
var a = "ABC"
a = a.toLowerCase();
//a == "abc"

両方の値を小文字に変換してから比較します。大文字と小文字に関係なく、それらが等しい文字である場合、true が返されます。

valueあなたがであると仮定しますString

var input = Ext.getCmp('search_input_text').getValue();
match = value.toLowerCase().match(input.toLowerCase()) ? input : match;

これは一時変数を使用して、元の大文字で値を返します。

于 2012-12-12T07:47:46.927 に答える
0

大文字と小文字を区別しない検索が必要な場合は、次のように記述できます

match = (match.toLowerCase().indexOf("search_input_text") >= 0) ? "search_input_text" : match;
于 2012-12-12T07:53:53.513 に答える
0
  1. 正規表現には、文字列引数を使用するコンストラクターがあります。
  2. ブール値の結果が必要な場合は、matchを使用せず、代わりにtestを使用してください。

    store.filter(new Ext.util.Filter({
        filterFn: function (object) {
            var match = false;
            Ext.Object.each(object.data, function (property, value) {
                var filterValue = Ext.getCmp('search_input_text').getValue();  
                var r = new RegExp(filterValue, 'i'); 
                match = match || r.test(value);  
            });
            return match;
        }
     ...
     }
    
于 2012-12-12T07:57:50.953 に答える