Как сформулировать фильтр с помощью плагина DataTables jQuery и регулярных выражений? - PullRequest
3 голосов
/ 03 апреля 2012

Я использую плагин jQuery DataTables для фильтрации результатов по таблице.В моей таблице перечислены клиенты и участники, к которым они относятся.У меня есть выпадающий список, который позволяет пользователю фильтровать таблицу для тех клиентов, которые являются членами определенной группы.Мои проблемы состоят в том, что клиенты могут быть членами нескольких групп, и все они перечислены в одном столбце.

Например, Джо может быть членом следующих групп:

  • Группа 1
  • Группа 5
  • Группа 10

Если я выполняю регулярную фильтрацию (см. Ниже), и пользователь выбирает «Группу 1» из раскрывающегося списка, онбудет по-прежнему показывать клиентов, которые являются членами «Группы 10.».

function fnFilterColumn ( i ){
    $('#results').dataTable().fnFilter(
        $("#filter").val(),
        i,
        false            
    );
}

Если я включу Regex (см. ниже), тогда он «точно» совпадет.Поэтому, если пользователь выберет «Группу 1» из раскрывающегося списка, он покажет только тех клиентов, которые являются только членами «Группы 1».

function fnFilterColumn ( i ){
     $('#results').dataTable().fnFilter(
         '^' + $("#filter").val() + '$',
         i,
         true        
    );
}

Как мне настроить фильтр для поиска соответствия всей фразе?».Таким образом, фильтр для «Группы 1» будет показывать фильтры в «Группе 1», не захватывая также и «Группу 10».Есть идеи?

1 Ответ

2 голосов
/ 03 апреля 2012

Подход регулярного выражения кажется разумным. Просто используйте границы слов вместо начальных / конечных якорей:

function fnFilterColumn ( i ){
    $('#results').dataTable().fnFilter(
        '\\b' + $("#l"+(i)+"_filter").val() + '\\b',
        i,
        true        
    );
}

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

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