forked from sunnywalker/jQuery.FilterTable
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjquery.filtertable.min.js
More file actions
6 lines (6 loc) · 2.86 KB
/
Copy pathjquery.filtertable.min.js
File metadata and controls
6 lines (6 loc) · 2.86 KB
1
2
3
4
5
6
(function($){var jversion=$.fn.jquery.split("."),jmajor=parseFloat(jversion[0]),jminor=parseFloat(jversion[1]);if(jmajor<2&&jminor<8)$.expr[":"].filterTableFind=function(a,i,m){return $(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0};else $.expr[":"].filterTableFind=jQuery.expr.createPseudo(function(arg){return function(el){return $(el).text().toUpperCase().indexOf(arg.toUpperCase())>=0}});$.fn.filterTable=function(options){var defaults={callback:null,containerClass:"filter-table",containerTag:"p",
hideTFootOnFilter:false,highlightClass:"alt",inputName:"",inputType:"search",label:"Filter:",minRows:8,placeholder:"search this table",quickList:[],quickListClass:"quick",quickListGroupTag:"",quickListTag:"a",visibleClass:"visible",bindExistingInput:null},hsc=function(text){return text.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")},settings=$.extend({},defaults,options);var doFiltering=function(table,q){var tbody=table.find("tbody");if(q===""){tbody.find("tr").show().addClass(settings.visibleClass);
tbody.find("td").removeClass(settings.highlightClass);if(settings.hideTFootOnFilter)table.find("tfoot").show()}else{tbody.find("tr").hide().removeClass(settings.visibleClass);if(settings.hideTFootOnFilter)table.find("tfoot").hide();tbody.find("td").removeClass(settings.highlightClass).filter(':filterTableFind("'+q.replace(/(['"])/g,"\\$1")+'")').addClass(settings.highlightClass).closest("tr").show().addClass(settings.visibleClass)}if(settings.callback)settings.callback(q,table)};return this.each(function(){var t=
$(this),tbody=t.find("tbody"),container=null,quicks=null,filter=null;if(t[0].nodeName==="TABLE"&&tbody.length>0&&(settings.minRows===0||settings.minRows>0&&tbody.find("tr").length>settings.minRows)&&!t.prev().hasClass(settings.containerClass)){if(settings.bindExistingInput)filter=$(settings.bindExistingInput);else{container=$("<"+settings.containerTag+" />");if(settings.containerClass!=="")container.addClass(settings.containerClass);container.prepend(settings.label+" ");filter=$('<input type="'+settings.inputType+
'" placeholder="'+settings.placeholder+'" name="'+settings.inputName+'" />')}if($.fn.bindWithDelay)filter.bindWithDelay("keyup",function(){doFiltering(t,$(this).val())},200);else filter.bind("keyup",function(){doFiltering(t,$(this).val())});filter.bind("click search",function(){doFiltering(t,$(this).val())});container.append(filter);if(settings.quickList.length>0){quicks=settings.quickListGroupTag?$("<"+settings.quickListGroupTag+" />"):container;$.each(settings.quickList,function(index,value){var q=
$("<"+settings.quickListTag+' class="'+settings.quickListClass+'" />');q.text(hsc(value));if(q[0].nodeName==="A")q.attr("href","#");q.bind("click",function(e){e.preventDefault();filter.val(value).focus().trigger("click")});quicks.append(q)});if(quicks!==container)container.append(quicks)}t.before(container)}})}})(jQuery);