I\'m using the dataTables jQuery plugin (which is totally awesome), but I\'m having trouble getting my table to filter based on the change of my select box.
Function:
$.extend( true, $.fn.dataTable.defaults, {
"bFilter": true,
initComplete: function () {
this.api().column(1).every( function () {
var column = this;
var select = $('<select><option value="">All Subjects</option></select>')
.appendTo( $(column.header()).empty() )
.on( 'change', function () {
var val = $.fn.dataTable.util.escapeRegex($(this).val());
column
.search( val ? '^'+val+'$' : '', true, false )
.draw();
} );
column.data().unique().sort().each( function ( d, j ) {
select.append( '<option value="'+d+'">'+d+'</option>' )
} );
} );
},
} );
dataTables features
I knew I had done this before, and you have to watch this little piece of information:
Note that if you wish to use filtering in DataTables this must remain 'true' - to remove the default filtering input box and retain filtering abilities, please use sDom.
you need to set {bFilter:true}, and move your <select></select>
into a custom element registered through sDom. I can guess your code will look like this:
$(document).ready(function() {
$("#msds-table").dataTable({
"sPaginationType": "full_numbers",
"bFilter": true,
"sDom":"lrtip" // default is lfrtip, where the f is the filter
});
var oTable;
oTable = $('#msds-table').dataTable();
$('#msds-select').change( function() {
oTable.fnFilter( $(this).val() );
});
});
your code for oTable.fnFilter( $(this).val() );
will not fire while {bFilter:false};
according to the documentation
Use this code:
$('.btn-success').on('click',function (e) {
//to prevent the form from submitting use e.preventDefault()
e.preventDefault();
var res = $("#userid").val();
var sNewSource = "<?php echo base_url(); ?>myaccount/MyData_select?userid=" + res + "";
var oSettings = ETable.fnSettings();
oSettings.sAjaxSource = sNewSource;
ETable.fnDraw();
});