The filtering functionality that is provided by DataTables is very useful for quickly search through the information in the table - however the search is global, and you (or the end user) may wish to filter only on a particular column of data. To met this need the DataTables fnFilter() API function allow you to specify a column to limit to search to. Note that this works in-combination with the global search filter. Further note that because the input elements are outside of the control of DataTables, with state saving enabled, stored values are not automatically restored - please see this post in the forum for how to do this.
The example below shows a table which has a text input box for each column in the footer element of the table. This allows the data in each column to be quickly filtered upon by the end user.
Rendering engine | Browser | Platform(s) | Engine version | CSS grade |
---|---|---|---|---|
Trident | Internet Explorer 4.0 | Win 95+ | 4 | X |
Trident | Internet Explorer 5.0 | Win 95+ | 5 | C |
Trident | Internet Explorer 5.5 | Win 95+ | 5.5 | A |
Trident | Internet Explorer 6 | Win 98+ | 6 | A |
Trident | Internet Explorer 7 | Win XP SP2+ | 7 | A |
Trident | AOL browser (AOL desktop) | Win XP | 6 | A |
Gecko | Firefox 1.0 | Win 98+ / OSX.2+ | 1.7 | A |
Gecko | Firefox 1.5 | Win 98+ / OSX.2+ | 1.8 | A |
Gecko | Firefox 2.0 | Win 98+ / OSX.2+ | 1.8 | A |
Gecko | Firefox 3.0 | Win 2k+ / OSX.3+ | 1.9 | A |
Gecko | Camino 1.0 | OSX.2+ | 1.8 | A |
Gecko | Camino 1.5 | OSX.3+ | 1.8 | A |
Gecko | Netscape 7.2 | Win 95+ / Mac OS 8.6-9.2 | 1.7 | A |
Gecko | Netscape Browser 8 | Win 98SE+ | 1.7 | A |
Gecko | Netscape Navigator 9 | Win 98+ / OSX.2+ | 1.8 | A |
Gecko | Mozilla 1.0 | Win 95+ / OSX.1+ | 1 | A |
Gecko | Mozilla 1.1 | Win 95+ / OSX.1+ | 1.1 | A |
Gecko | Mozilla 1.2 | Win 95+ / OSX.1+ | 1.2 | A |
Gecko | Mozilla 1.3 | Win 95+ / OSX.1+ | 1.3 | A |
Gecko | Mozilla 1.4 | Win 95+ / OSX.1+ | 1.4 | A |
Gecko | Mozilla 1.5 | Win 95+ / OSX.1+ | 1.5 | A |
Gecko | Mozilla 1.6 | Win 95+ / OSX.1+ | 1.6 | A |
Gecko | Mozilla 1.7 | Win 98+ / OSX.1+ | 1.7 | A |
Gecko | Mozilla 1.8 | Win 98+ / OSX.1+ | 1.8 | A |
Gecko | Seamonkey 1.1 | Win 98+ / OSX.2+ | 1.8 | A |
Gecko | Epiphany 2.20 | Gnome | 1.8 | A |
Webkit | Safari 1.2 | OSX.3 | 125.5 | A |
Webkit | Safari 1.3 | OSX.3 | 312.8 | A |
Webkit | Safari 2.0 | OSX.4+ | 419.3 | A |
Webkit | Safari 3.0 | OSX.4+ | 522.1 | A |
Webkit | OmniWeb 5.5 | OSX.4+ | 420 | A |
Webkit | iPod Touch / iPhone | iPod | 420.1 | A |
Webkit | S60 | S60 | 413 | A |
Presto | Opera 7.0 | Win 95+ / OSX.1+ | - | A |
Presto | Opera 7.5 | Win 95+ / OSX.2+ | - | A |
Presto | Opera 8.0 | Win 95+ / OSX.2+ | - | A |
Presto | Opera 8.5 | Win 95+ / OSX.2+ | - | A |
Presto | Opera 9.0 | Win 95+ / OSX.3+ | - | A |
Presto | Opera 9.2 | Win 88+ / OSX.3+ | - | A |
Presto | Opera 9.5 | Win 88+ / OSX.3+ | - | A |
Presto | Opera for Wii | Wii | - | A |
Presto | Nokia N800 | N800 | - | A |
Presto | Nintendo DS browser | Nintendo DS | 8.5 | C/A1 |
KHTML | Konqureror 3.1 | KDE 3.1 | 3.1 | C |
KHTML | Konqureror 3.3 | KDE 3.3 | 3.3 | A |
KHTML | Konqureror 3.5 | KDE 3.5 | 3.5 | A |
Tasman | Internet Explorer 4.5 | Mac OS 8-9 | - | X |
Tasman | Internet Explorer 5.1 | Mac OS 7.6-9 | 1 | C |
Tasman | Internet Explorer 5.2 | Mac OS 8-X | 1 | C |
Misc | NetFront 3.1 | Embedded devices | - | C |
Misc | NetFront 3.4 | Embedded devices | - | A |
Misc | Dillo 0.8 | Embedded devices | - | X |
Misc | Links | Text only | - | X |
Misc | Lynx | Text only | - | X |
Misc | IE Mobile | Windows Mobile 6 | - | C |
Misc | PSP browser | PSP | - | C |
Other browsers | All others | - | - | U |
var asInitVals = new Array(); $(document).ready(function() { var oTable = $('#example').dataTable( { "oLanguage": { "sSearch": "Search all columns:" } } ); $("tfoot input").keyup( function () { /* Filter on the column (the index) of this element */ oTable.fnFilter( this.value, $("tfoot input").index(this) ); } ); /* * Support functions to provide a little bit of 'user friendlyness' to the textboxes in * the footer */ $("tfoot input").each( function (i) { asInitVals[i] = this.value; } ); $("tfoot input").focus( function () { if ( this.className == "search_init" ) { this.className = ""; this.value = ""; } } ); $("tfoot input").blur( function (i) { if ( this.value == "" ) { this.className = "search_init"; this.value = asInitVals[$("tfoot input").index(this)]; } } ); } );
Note that in the above code, the support functions are provided to ensure that the end user knows what data is being filtered upon. fnFilter() is the function of primary import here.