Search by Column in datatable

by Faisal Khan Janjua

HTML

<script src="https://cdn.datatables.net/1.10.4/js/jquery.dataTables.min.js"></script>
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.4/css/jquery.dataTables.css">
<select id='Office'>
    <option value="">all</option>
    <option value="London">London</option>
    <option value="San Francisco">San Francisco</option>
    <option value="New York">New York</option>
</select>

<table id="example" class="display" cellspacing="0" width="100%">
        <thead>
            <tr>
                <th>Name</th>
                <th>Position</th>
                <th>Office</th>
                <th>Age</th>
                <th>Start date</th>
                <th>Salary</th>
            </tr>
        </thead>
 
        <tfoot>
            <tr>
                <th>Name</th>
                <th>Position</th>
                <th>Office</th>
                <th>Age</th>
                <th>Start date</th>
                <th>Salary</th>
            </tr>
        </tfoot>
 
        <tbody>
            <tr>
                <td>Tiger Nixon</td>
                <td>System Architect</td>
                <td>Edinburgh</td>
                <td>61</td>
                <td>2011/04/25</td>
                <td>$320,800</td>
            </tr>
            <tr>
                <td>Garrett Winters</td>
                <td>Accountant</td>
                <td>Tokyo</td>
                <td>63</td>
                <td>2011/07/25</td>
                <td>$170,750</td>
            </tr>
            <tr>
                <td>Ashton Cox</td>
                <td>Junior Technical Author</td>
                <td>San Francisco</td>
                <td>66</td>
                <td>2009/01/12</td>
                <td>$86,000</td>
            </tr>
            <tr>
                <td>Cedric Kelly</td>
                <td>Senior Javascript Developer</td>
                <td>Edinburgh</td>
                <td>22</td>
                <td>2012/03/29</td>
                <td>$433,060</td>
           ...

CSS

tfoot input {
        width: 100%;
        padding: 3px;
        box-sizing: border-box;
    }

JavaScript

$('#example tfoot th').each( function () {
  var title = $('#example thead th').eq( $(this).index() ).text();
  $(this).html( '<input type="text" placeholder="Search '+title+'" />' );
} );

var table = $('#example').DataTable();

table.columns().eq( 0 ).each( function ( colIdx ) {
  $( 'input', table.column( colIdx ).footer() ).on( 'keyup change', function () {
    table
      .column( colIdx )
      .search( this.value )
      .draw();
  } );
} );

$("#Office").on("change", function(e) {
  var office = $(this).val();
  table.column(2).search(office).draw();
});