Hiya okeis so working demo here jsfiddle: http://jsfiddle.net/BCreb/87/
Explanation
So, for starters: you have 2 flags with the same identifier, which is wrong :) see the updated HTML below (after the jQuery code).
I'm not sure that you can do this with a checkbox (maybe I'm wrong): read the plugin: (Note that some guys wrote a parser that you can check), but I like tablesorter, plugin link: [link] should Work. https://github.com/jbritten/jquery-tablesorter-filter/blob/master/tablesorter_filter.js ;
& Here you can have a good discussion / opinions here: jQuery filter the table with text, checkboxes, select & , you can study this plugin: http://datatables.net/ ; But the above solution will do the trick for you.
Below code has filterRow() and ShowAll() function which filter your table data accordingly and display the row:
JQuery code
jQuery(document).ready(function() { $("#myTable").tablesorter({ debug: false, widgets: ['zebra'], sortList: [[0, 0]] }).tablesorterFilter({ filterContainer: $("#filter-box"), filterClearContainer: $("#filter-clear-button"), filterColumns: [0], filterCaseSensitive: false, callback: function() { var rowCount = $("#myTable tr:visible").length - 1; // alert(rowCount); } }); $("#check-box, #check-box2").click(function(){ // alert($(this).is(":checked")); // If both the checkboxes are selected or not selected. if (($("#check-box").is(":checked") && $("#check-box2").is(":checked")) || (!$("#check-box").is(":checked") && !$("#check-box2").is(":checked")) ) { showAllRow(); } else if ($("#check-box").is(":checked") ) { filterRow($("#check-box").val()); } else if ($("#check-box2").is(":checked") ){ filterRow($("#check-box2").val()); } }); }); function showAllRow() { $("#myTable").find("tr").each(function(){ $(this).show(); }); } function filterRow(chckBoxValue) { $("#myTable").find("tr").each(function(){ var bool = 0; // Identifies if the rows td has that filter or not. $(this).find("td").each(function(){ if($(this).text() != chckBoxValue) { bool = 1; } else { bool = 0; return false; } }); if (bool == 1) { $(this).hide(); }else{ $(this).show(); } }); }
This should help! greetings
HTML
Search: <input name="filter" id="filter-box" value="" maxlength="30" size="30" type="text"> <input id="filter-clear-button" type="submit" value="Clear"/> <br/> <input name="filter" id="check-box" type="checkbox" value="Doe"> Doe<br> <input name="filter" id="check-box2" type="checkbox" value="Smith"> Smith<br> <table id="myTable"> <thead> <tr> <th>Last Name</th> <th>First Name</th> <th>Email</th> <th>Web Site</th> </tr> </thead> <tbody> <tr> <td>Smith</td> <td>John</td> <td> jsmith@gmail.com </td> <td>http://www.jsmith.com</td> </tr> <tr> <td>Doe</td> <td>Jason</td> <td> jdoe@hotmail.com </td> <td>http://www.jdoe.com</td> </tr> <tr> <td>Smith</td> <td>John</td> <td> jsmith@gmail.com </td> <td>http://www.jsmith.com</td> </tr> <tr> <td>Doe</td> <td>Jason</td> <td> jdoe@hotmail.com </td> <td>http://www.jdoe.com</td> </tr> <tr> <td>Smith</td> <td>John</td> <td> jsmith@gmail.com </td> <td>http://www.jsmith.com</td> </tr> <tr> <td>Doe</td> <td>Jason</td> <td> jdoe@hotmail.com </td> <td>http://www.jdoe.com</td> </tr> <tr> <td>Smith</td> <td>John</td> <td> jsmith@gmail.com </td> <td>http://www.jsmith.com</td> </tr> <tr> <td>Doe</td> <td>Jason</td> <td> jdoe@hotmail.com </td> <td>http://www.jdoe.com</td> </tr> <tr> <td>Smith</td> <td>John</td> <td> jsmith@gmail.com </td> <td>http://www.jsmith.com</td> </tr> <tr> <td>Doe</td> <td>Jason</td> <td> jdoe@hotmail.com </td> <td>http://www.jdoe.com</td> </tr> </tbody> </table>
Tats_innit
source share