(function($) { $.fn.filterTable = function(options) { var input = this; var excludeFilter = function(row, col, headers, excludes) { var exclude = false; var cols = $(headers.get(row)).find('th'); if (excludes.indexOf($(cols.get(col)).html().toUpperCase()) > -1) { exclude = true; } return exclude; } this.keyup(function(e) { var settings = $.extend({ "table": "filteredTable", "excludes": [], "height": 1 }, options); var id_table = settings.table; var excludes = settings.excludes; var height = settings.height; for (i = 0; i < excludes.length; i ++) { excludes[i] = excludes[i].toUpperCase(); } var filter = input.val().toUpperCase(); var table = $('#' + id_table); var rows = table.find('tbody tr'); var headers = table.find('thead tr'); if (filter == '') { rows.css('display', ''); return; } for (i = 0; i < rows.length; i += height) { var cols; var found = false; for (n = 0; n < height; n ++) { cols = $(rows.get(i + n)).find('td'); $.each(cols, function(j, e) { if (excludeFilter(n, j, headers, excludes)) { return; } if ($(this).html().toUpperCase().indexOf(filter) > -1) { found = true; } }); } if (found) { for (n = 0; n < height; n ++) { $(rows.get(i + n)).css('display', ''); } } else { for (n = 0; n < height; n ++) { $(rows.get(i + n)).css('display', 'none'); } } } }); return this; } }(jQuery));