jQuery DataTables - Filter column by exact match
Solution 1
Ok solved the problem. However, since the column I am using the exact match on sometimes contains multiple ID #s seperated by commas, I wont be able to use an exact match search.
But for those interested, here is the answer:
oTable.fnFilter( "^"+TERM+"$", COLUMN , true); //Term, Column #, RegExp Filter
Solution 2
This will give you exact result for a column.
table.column(i)
.search("^" + $(this).val() + "$", true, false, true)
.draw();
ie . search( input , regex, smart , caseInsen )
Solution 3
$(document).ready( function() {
$('#example').dataTable( {
"oSearch": {"bSmart": false}
} );
} )
Try using the bSmart option and setting it to false
From the documentation
"When "bSmart" DataTables will use it's smart filtering methods (to word match at any point in the data), when false this will not be done."
UPDATE
I found this:
oSettings.aoPreSearchCols[ iCol ].sSearch = "^\\s*"+'1'+"\\s*$";
oSettings.aoPreSearchCols[ iCol ].bRegex = false;
oSettings.aoPreSearchCols[ iCol ].bSmart= false;
at this link http://www.datatables.net/forums/discussion/4096/filtering-an-exact-match/p1
looks like you can set bSmart
and bRegex
per column as well as specifying a manual regex per column.
Solution 4
If you want the exact match from the beginning you can try this code,
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();
} );
Solution 5
You can use regular expression for exact matching as following:
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();
});
The syntax of the search
function is:
search(input, regex, smart_search, case_insensitive)
We disable smart search in this case because search
function uses regular expression internally when smart search is set to true. Otherwise, this creates conflict between our regular expression and the one that is used by search
function.
For more information, check out the following documentation from DataTable:
Hope it's helpful!
JimmyJammed
Software Engineer Experienced In: iOS / Objective-C / Swift PHP Javascript / jQuery mySQL / SQL HTML / CSS Graphic Design
Updated on September 04, 2021Comments
-
JimmyJammed over 2 years
Trying to only display exact matches to the search term entered in the search bar.
For instance, I have a search bar that filters by ID#. I want only records that match the exact # entered to display.
So if
123
is entered, I don't want12345
,91239
, etc etc to be displayed. Only123
.Saw some info about
bRegex
on the FAQ page, but it's not working for me. Any ideas?