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 回答