var filterBy = function(functionType) { $.fn.dataTableExt.afnFiltering.length = 0; $.fn.dataTable.ext.search.push( function( settings, data, dataIndex ) { var type = data[1]; // use data for the Type column if ( type.toUpperCase() == functionType || functionType == 'All' ) { return true; } return false; } ); } $(document).ready(function() { var activeObject; var table = $('#routine_table').DataTable( { lengthChange: false, ordering: true, paging: config.pagination, pageLength: 50, autoWidth: true, processing: true, order: [[ 0, "asc" ]], buttons: [ { text: 'All', action: function ( e, dt, node, config ) { filterBy('All'); if (activeObject != null) { activeObject.active(false); } table.draw(); } }, { text: 'Functions', action: function ( e, dt, node, config ) { filterBy('FUNCTION'); if (activeObject != null) { activeObject.active(false); } this.active( !this.active() ); activeObject = this; table.draw(); } }, { text: 'Procedures', action: function ( e, dt, node, config ) { filterBy('PROCEDURE'); if (activeObject != null) { activeObject.active(false); } this.active( !this.active() ); activeObject = this; table.draw(); } }, { extend: 'columnsToggle', columns: '.toggle' } ] } ); //schemaSpy.js dataTableExportButtons(table); } );