How to disable a search/filter on a specific column on a datatable?

前端 未结 2 1033
遇见更好的自我
遇见更好的自我 2021-01-01 06:19

My datatable has 5 columns and I need to disable filtering for the 3rd, 4th and last column.

please help!!!

this is the javascript:

相关标签:
2条回答
  • 2021-01-01 07:01

    The same story for columns with filtering. 2nd column filtering disable:

    $(document).ready(function() {
    
    $('#example').DataTable( {
               initComplete: function () {
                this.api().columns().every( function () {
    
                    var column = this;
                    var some = column.index();
                    if (column.index() == 1) return;
                    var select = $('<select><option value=""></option></select>')
                        .appendTo( $(column.footer()).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>' )
                    } );
                } );
            }})
    };
    
    0 讨论(0)
  • 2021-01-01 07:05

    You can use .not to exclude the columns you want to add input text too. Furthermore, you can also add code to avoid adding event handlers to any input boxes in the excluded columns (although if no input boxes exist in those cells it doesn't matter):

    $(document).ready(function() {
        // Setup - add a text input to each footer cell
        $('#example tfoot th').not(":eq(2),:eq(3),:eq(4)") //Exclude columns 3, 4, and 5
                              .each( function () {
            var title = $('#example thead th').eq( $(this).index() ).text();
            $(this).html( '<input type="text" placeholder="Search '+title+'" />' );
        } );
    
        // DataTable
        var table = $('#example').DataTable();
    
        // Apply the search
        table.columns().eq( 0 ).each( function ( colIdx ) {
            if (colIdx == 2 || colIdx == 3 || colIdx == 4) return; //Do not add event handlers for these columns
    
            $( 'input', table.column( colIdx ).footer() ).on( 'keyup change', function () {
                table
                    .column( colIdx )
                    .search( this.value )
                    .draw();
            } );
        } );
    } );
    

    See Fiddle: http://jsfiddle.net/30phqqqg/1/

    0 讨论(0)
提交回复
热议问题