2012-12-12 37 views
1

我有这个功能,以过滤值,以实现一个自动完成功能:的JavaScript /不区分大小写

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

类似于LIKE在sql中。我怎样才能做到这一点 ?

+0

如何存储的项目进行比较,并暂时执行'.toLowerCase()'上他们,但回到原来的? – nozzleman

回答

0
  1. 正则表达式有使用字符串参数的构造函数。
  2. 如果您需要布尔结果请勿使用匹配,请使用代替

    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; 
        } 
    ... 
    } 
    
0
var a = "ABC" 
a = a.toLowerCase(); 
//a == "abc" 

将两个值转换为小写,然后比较它们。如果他们是平等的字母,不区分大小写,它将返回true:

假设你valueString

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

这将使用临时变量返回的值与它的原始资本。

0

如果你想不区分大小写的搜索,你可以写

match = (match.toLowerCase().indexOf("search_input_text") >= 0) ? "search_input_text" : match;