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. Как я могу это сделать ?


person Noon    schedule 12.12.2012    source источник
comment
как насчет сохранения элементов для сравнения и временного выполнения .toLowerCase() для них, но возврата исходного?   -  person nozzleman    schedule 12.12.2012


Ответы (3)


  1. Regexp имеет конструктор, использующий строковые аргументы.
  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;
        }
     ...
     }
    
person Damask    schedule 12.12.2012

Если вам нужен поиск без учета регистра, вы можете написать

match = (match.toLowerCase().indexOf("search_input_text") >= 0) ? "search_input_text" : match;
person palaѕн    schedule 12.12.2012

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;

Это использует временные переменные, чтобы вернуть значение с его исходной заглавной буквой.

person Cerbrus    schedule 12.12.2012