<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
    
<link href="https://cdn.datatables.net/1.10.25/css/jquery.dataTables.css" rel="stylesheet" type="text/css" />
<script src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.js"></script>
<link href="https://editor.datatables.net/extensions/Editor/css/editor.dataTables.min.css" rel="stylesheet" type="text/css" />
<script src="https://editor.datatables.net/extensions/Editor/js/dataTables.editor.min.js"></script>   
<link href="https://cdn.datatables.net/fixedheader/3.1.9/css/fixedHeader.dataTables.css" rel="stylesheet" type="text/css" />
<script src="https://cdn.datatables.net/fixedheader/3.1.9/js/dataTables.fixedHeader.js"></script>
  
<link href="https://cdn.datatables.net/buttons/1.7.1/css/buttons.dataTables.css" rel="stylesheet" type="text/css" />
<script src="https://cdn.datatables.net/buttons/1.7.1/js/dataTables.buttons.js"></script>
<meta charset="utf-8">
    
<meta charset=utf-8 />
<title>DataTables - JS Bin</title>
</head>
  <body>
    <div class="container">
      <table id="table" class="display" style="width:100%">
        <thead>
          <tr>
            <th>Name</th>
            <th>Position</th>
            <th>Office</th>
            <th>Age</th>
            <th>Status</th>
            <th>Salary</th>
          </tr>
          <tr>
            <th></th>
            <th></th>
            <th></th>
            <th></th>
            <th></th>
            <th></th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>Tiger Nixon</td>
            <td>System Architect</td>
            <td>Edinburgh</td>
            <td>61</td>
            <td>1</td>
            <td>$3,120</td>
          </tr>
          <tr>
            <td>Garrett Winters</td>
            <td>Director</td>
            <td>Edinburgh</td>
            <td>63</td>
            <td>1</td>
            <td>$5,300</td>
          </tr>
          <tr>
            <td>Ashton Cox</td>
            <td>Technical Author</td>
            <td>San Francisco</td>
            <td>66</td>
            <td>2</td>
            <td>$4,800</td>
          </tr>
        </tbody>
      </table>
    </div>
  </body>
</html>
 
body {
  font: 90%/1.45em "Helvetica Neue", HelveticaNeue, Verdana, Arial, Helvetica, sans-serif;
  margin: 0;
  padding: 0;
  color: #333;
  background-color: #fff;
}
 
$(document).ready(function(){
var tab;
var editor;
var statusSelectOptions = [
                {
                    "label": "Completed",
                    "value": "2"
                },
                {
                    "label": "Created",
                    "value": "1"
                }
            ];
    $('#table thead tr').clone(true).appendTo( '#table thead' );
    $('#table thead tr:eq(1) th').each( function (i) {
    var title = $(this).text();
        $(this).html( '<input type="text" placeholder="Filter by ' + title + '" />' );
        
        $( 'input', this ).on( 'keyup change', function () {
            if ( tab.column(i).search() !== this.value ) {
                console.log( this.value );
                tab.column(i).search( this.value ).draw();
            }
        } );
    } );
    
    
    editor = new $.fn.DataTable.Editor({
        table: "#table",
        fields:    [ 
        {
            "label": "Status",
            "name": "Status",
            "type": "select",
            "options": statusSelectOptions
        }
        ]   
    });
    
    
    tab = $("#table").DataTable({
        dom: "Bfrtlip",
        orderCellsTop: true,
        fixedHeader: true,
        buttons: ['copy','csv','excel','pdf'],
        columnsDef:[{
                targets: 4,
                render: function (data, type, row){
                    if (type === 'display' || type === 'filter') {
                        return $.grep( statusSelectOptions, function(obj){return obj.value == data;})[0].label;
                    }
                    return data;
                }
            }
        ],
        columns: [
          {
            data: 'Name'
          },
          {
            data: 'Position'
          },
          {
            data: 'Office'
          },
          {
            data: 'Age'
          },
          {
            data: 'Status',
            "render": function (data, type, row) { 
              return $.grep( statusSelectOptions, function(obj){return obj.value == data;})[0].label;
            }
          },
          {
            data: "Salary"
          }
        ],
        initComplete: function () {
            this.api().columns().every( function () {
                var column = this;
                var select = $('<select><option value=""></option></select>')
                .appendTo( $("#table thead tr:eq(2) th").eq(column.index()).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 ){
                  if (column.index() === 4) {
                    var opt = $.grep( statusSelectOptions, function(obj){return obj.value == d;})[0].label;
                    select.append( '<option value="'+opt+'">'+opt+'</option>');
                  } else {
                    select.append( '<option value="'+d+'">'+d+'</option>');
                  }
                });
            });
        }
      
    });
});
Output 300px

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers