JQuery DataTables - сортировать столбец точным соответствием
Попытка отображать только точные совпадения с поисковым термином, введенным в строке поиска.
Например, у меня есть панель поиска, которая фильтрует по ID #. Я хочу, чтобы только записи, соответствующие точной #, введенной для отображения.
Итак, если введено 123
, я не хочу показывать 12345
, 91239
и т.д. и т.д. Только 123
.
Увидите некоторую информацию о bRegex
на странице часто задаваемых вопросов, но она не работает для меня. Любые идеи?
Ответы
Ответ 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();