jQuery DataTables: Search input with autocomplete using Typeahead and Bootstrap (Server-side processing)
For more information, see https://www.gyrocode.com/articles/jquery-datatables-search-input-with-autocomplete-using-typeahead-and-bootstrap/
by gyrocode
HTML
<link rel="stylesheet" href="https://cdn.datatables.net/v/bs-3.3.7/dt-1.10.15/datatables.min.css">
<script src="https://cdn.datatables.net/v/bs-3.3.7/dt-1.10.15/datatables.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-3-typeahead/4.0.2/bootstrap3-typeahead.js"></script>
<div class="container">
<h3><a href="https://www.gyrocode.com/articles/jquery-datatables-search-input-with-autocomplete-using-typeahead-and-bootstrap/">jQuery DataTables: Search input with autocomplete using Typeahead and Bootstrap</a> <small>Server-side processing</small></h3>
<hr>
<table id="example" class="table" 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>Bradley Greer</td>
<td>Software Engineer</td>
<td>London</td>
<td>41</td>
<td>2012/10/13</td>
<td>$132,000</td>
</tr>
<tr>
...
JavaScript
$(document).ready(function() {
var table = $('#example').DataTable({
'initComplete': function(){
var api = this.api();
// Initialize Typeahead plug-in
$('.dataTables_filter input[type="search"]', api.table().container())
.typeahead({
source: function(query, process){
$.getJSON('https://api.myjson.com/bins/e66c3', { q: query }, function (data){
return process(data);
});
},
afterSelect: function(value){
api.search(value).draw();
}
}
);
}
});
});