Resources
This commit is contained in:
68
resources/js/jquery.filterTable.js
Normal file
68
resources/js/jquery.filterTable.js
Normal file
@ -0,0 +1,68 @@
|
||||
(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));
|
Reference in New Issue
Block a user