You have the option to place the dropdown filter on the top header or bottom footer of a jquery datatable. By using columns(), the API is utilized to construct the select inputs.to iterate through the columns, use every() and then column().To obtain the data for each column individually, use the data() method.
Let’s examine a dropdown filter on a certain column in the datatable, a dropdown filter on the header of the datatable, and a dropdown filter on the top of the jquery datatable.
HTML
<table id="example" class="display" style="width:100%">
<thead>
<tr>
<th>Name</th>
<th>Position</th>
<th>Office</th>
<th>Age</th>
<th>Start date</th>
<th>Salary</th>
</tr>
</thead>
<tbody>
<tr>
<td>Angelica Ramos</td>
<td>Chief Executive Officer (CEO)</td>
<td>London</td>
<td>47</td>
<td>2009-10-09</td>
<td>$1,200,000</td>
</tr>
</tbody>
<tfoot>
<tr>
<th>Name</th>
<th>Position</th>
<th>Office</th>
<th>Age</th>
<th>Start date</th>
<th>Salary</th>
</tr>
</tfoot>
</table>
JQuery:
$(document).ready(function () {
$('#example').DataTable({
initComplete: function () {
this.api()
.columns()
.every(function () {
var column = this;
var select = $('<select><option value=""></option></select>')
.appendTo($(column.header()).empty())
.on('change', function () {
var val = $.fn.dataTable.util.escapeRegex($(this).val());
column.search(val ? '^' + val + '$' : '', true, false).draw();
});
column
.data()
.unique()
.sort()
.each(function (d, j) {
select.append('<option value="' + d + '">' + d + '</option>');
});
$(column.footer()).empty();
});
},
});
});