columns().search()
Search for data in the selected columns.
Description
While search()
provides the ability to search globally across the table, this method, and its singular counterpart, provide the ability to search for data on specific columns.
DataTables does not have any column search controls built-in as there are so many different ways that column specific data could be searched, but this method makes adding custom column search controls super easy. The examples below show how it may be used.
DataTables has a built in search algorithm referred to as "smart" searching and is designed to make searching the table data, easy to use for the end user. The smart search is performed using a regular expression and thus must be considered if you are using a regular expression search (second parameter of this method). For a full description of smart searching in DataTables, please refer to the documentation for search()
.
Note that this search ability in DataTables is actually technically a filter since it is subtractive. However, we term is a search to avoid naming overlap with the filter()
helper method.
Please be aware that this method sets the search to apply to the table only - it does not actually perform the search. In order to have the search performed and the result shown, use the draw()
method, which can be called simply as a chained method of the columns().search()
method's returned object - for example table.columns( [0, 1] ).search( 'Fred' ).draw();
. This is to provide the ability to queue multiple changes before performing a draw.
Types
function columns().search()
- Description:
Get the currently applied column search.
- Returns:
Api instance with the applied search terms for the selected columns in the result set.
function column().search( input [, options] )
- Description:
Set the search term to use for the selected column, with configuration options. Call
draw()
to update the table's view once the search term has been setup.- Parameters:
Name Type Optional 1 string|RegExp|function
No Search to apply to the column.
As of DataTables 2, this parameter can be given as a regular expression or a function.
If working with a regular expression, the data given is the search data for the cells in column in question.
In the case of a function the function is called for each row with two parameters which are passed in; the first is the search data for the cell in the row/column being search, and the second is the row's original data object. A boolean value should be returned:
true
to keep the row,false
to filter it out.Note that if a regex or function is provided for this parameter, the following parameters are ignored.
2 options
No Configuration options for how the search will be performed. See
DataTables.SearchOptions
for a description of all options. If an option is not given here, the value that it was set to for the previous search will be used.- Returns:
DataTables API instance
function columns().search( input [, regex[ , smart[ , caseInsen ]]] )
- Description:
Set the search term for the columns from the selector. Note this doesn't actually perform the search, but rather queues it up - use
draw()
to perform the search and display the result.- Parameters:
Name Type Optional 1 input
No The search term to apply. See the
input
parameter in the signature description above for details.2 regex
Yes - default:false Treat as a regular expression (
true
) or not (default,false
).3 smart
Yes - default:true Perform smart search (default,
true
) or not (false
). Please refer tosearch()
for a full description of smart filtering.Note that to perform a smart search, DataTables uses regular expressions, so if enable regular expressions using the second parameter to this method, you will likely want to disable smart searching as the two regular expressions might otherwise conflict and cause unexpected results.
4 caseInsen
Yes - default:true Do case-insensitive matching (default,
true
) or not (false
).- Returns:
DataTables API instance
Examples
Apply a search to multiple columns:
var table = new DataTable('#myTable');
table
.columns('.status')
.search('Important')
.draw();
Build a text input
search for each column. Note that this example performs partial word matching and smart searching.:
// Setup - add a text input to each footer cell
$('#example tfoot th').each(function () {
var title = $('#example thead th')
.eq($(this).index())
.text();
$(this).html('<input type="text" placeholder="Search ' + title + '" />');
});
// DataTable
var table = new DataTable('#myTable');
// Apply the filter
table.columns().every(function () {
var column = this;
$('input', this.footer()).on('keyup change', function () {
column.search(this.value).draw();
});
});
Build a search for each column with a select-filter
class.:
var table = new DataTable('#myTable');
table.columns('.select-filter').every(function () {
var that = this;
// Create the select list and search operation
var select = $('<select />')
.appendTo(this.footer())
.on('change', function () {
that.search($(this).val(), { exact: true }).draw();
});
// Get the search data for the first column and add to the select list
this.cache('search')
.sort()
.unique()
.each(function (d) {
select.append($('<option value="' + d + '">' + d + '</option>'));
});
});
Related
The following options are directly related and may also be useful in your application development.