Подтвердить что ты не робот

JQuery DataTables - сортировать столбец точным соответствием

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

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

Итак, если введено 123, я не хочу показывать 12345, 91239 и т.д. и т.д. Только 123.

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

4b9b3361

Ответ 1

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

Но для тех, кого это интересует, вот ответ:

oTable.fnFilter( "^"+TERM+"$", COLUMN , true); //Term, Column #, RegExp Filter

Ответ 2

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

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

т.е. поиск (ввод, регулярное выражение, умный, caseInsen)

Ответ 3

$(document).ready( function() {
    $('#example').dataTable( {
        "oSearch": {"bSmart": false}
    } );
} )

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

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

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

ОБНОВЛЕНИЕ

Я нашел это:

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 за столбец, а также указать ручное регулярное выражение для каждого столбца.

Ответ 4

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

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

Ответ 5

$(document).ready(function() {
    tbl = $('#example').dataTable();
    tbl.fnFilter("^" + filter_value + "$");
});

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

Ответ 6

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