jQuery DataTables - фильтровать столбец по точному соответствию - PullRequest
25 голосов
/ 23 декабря 2011

Попытка отображать только точные соответствия поисковому запросу, введенному в строке поиска.

Например, у меня есть панель поиска, которая фильтрует по ID #.Я хочу, чтобы отображались только записи, которые соответствуют точному # введенному значению.

Поэтому, если введено 123, я не хочу отображать 12345, 91239 и т. Д.Только 123.

Видела некоторую информацию о bRegex на странице часто задаваемых вопросов, но она не работает для меня.Есть идеи?

Ответы [ 8 ]

38 голосов
/ 29 мая 2014

Это даст вам точный результат для столбца.

 table.column(i)
 .search("^" + $(this).val() + "$", true, false, true)
 .draw();

т.е. поиск (input, regex, smart, caseInsen)

25 голосов
/ 23 декабря 2011

ОК решил проблему. Однако, поскольку столбец, в котором я использую точное совпадение, иногда содержит несколько идентификаторов #, разделенных запятыми, я не смогу использовать поиск точного соответствия.

Но для тех, кто заинтересован, вот ответ:

oTable.fnFilter( "^"+TERM+"$", COLUMN , true); //Term, Column #, RegExp Filter
8 голосов
/ 23 декабря 2011
$(document).ready( function() {
    $('#example').dataTable( {
        "oSearch": {"bSmart": false}
    } );
} )

Попробуйте использовать опцию bSmart и установите для нее значение false

Из документации

«Когда« bSmart »DataTables будет использовать свои интеллектуальные методы фильтрации (для совпадение слов в любой точке данных), когда ложь это не будет сделано. "

UPDATE

Я нашел это:

oSettings.aoPreSearchCols[ iCol ].sSearch = "^\\s*"+'1'+"\\s*$";
oSettings.aoPreSearchCols[ iCol ].bRegex = false;
oSettings.aoPreSearchCols[ iCol ].bSmart= false;

по этой ссылке http://www.datatables.net/forums/discussion/4096/filtering-an-exact-match/p1

похоже, что вы можете установить bSmart и bRegex для столбца, а также указать регулярное выражение для столбца.

3 голосов
/ 07 ноября 2017

Если вам нужно точное совпадение с самого начала, попробуйте этот код,

    var table = $('#myTable').DataTable()
    $('#filterrow > th:nth-child(2) > input').on( 'keyup change', function () {
        table
        .column( $(this).parent().index()+':visible' )
        .search( "^" + this.value, true, false, true )
        .draw();
    } );
1 голос
/ 10 августа 2018

Вы можете использовать регулярное выражение для точного соответствия следующим образом:

var table = $('#dt').DataTable();

$('#column3_search').on('keyup', function () {
    // Note: column() accepts zero-based index meaning the index of first column is 0, second column is 1 and so on.
    // We use `2` here as we are accessing 3rd column whose index is 2.
    table.column(2)
         .search("^" + this.value + "$", true, false, true)
         .draw();
});

Синтаксис функции search:

поиск (ввод, регулярное выражение, smart_search, case_insensitive)

Мы отключаем интеллектуальный поиск в этом случае, потому что функция search внутренне использует регулярное выражение, когда интеллектуальный поиск имеет значение true. В противном случае это создает конфликт между нашим регулярным выражением и тем, которое используется функцией search.

Для получения дополнительной информации ознакомьтесь со следующей документацией DataTable :

колонка (). Поиск ()

Надеюсь, это полезно!

0 голосов
/ 29 марта 2018

Текущие версии Datatables поддерживают использование реального точного сопоставления на основе столбцов.

table.column(i)
.search($(this).val(), false, false, false)
.draw();

Документация объясняет каждый флаг.

0 голосов
/ 22 мая 2017

table.column (col_num) .search (filter_value + "$", true, true, false) .draw ();

0 голосов
/ 23 декабря 2011
$(document).ready(function() {
    tbl = $('#example').dataTable();
    tbl.fnFilter("^" + filter_value + "$");
});

Где filter_value - строка, введенная в поле фильтра.

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