Accents neutralise - DataTable
Example of how use the accents neutralise DataTable plugin
by Gustavo Smaniotto
HTML
<script src="https://cdn.datatables.net/1.10.7/js/jquery.dataTables.min.js"></script>
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.7/css/jquery.dataTables.css">
<table id="people-data">
<thead>
<tr>
<th>Nome</th>
<th>Idade</th>
<th>Comida Preferida</th>
<th>Profissão</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>João</p>
</td>
<td>21</td>
<td> Lasanha</td>
<td> Estudante</td>
</tr>
<tr>
<td>
<p> Gustavo</p>
</td>
<td> 22</td>
<td>Pizza </td>
<td>Técnico agrícola </td>
</tr>
<tr>
<td>Tácila </td>
<td>15 </td>
<td>Picolé</td>
<td>Estagiária </td>
</tr>
<tr>
<td>Yohana </td>
<td>20 </td>
<td>Sorvete </td>
<td>Engenheira de produção </td>
</tr>
<tr>
<td>Marciléia </td>
<td>31 </td>
<td>Mamão papáia</td>
<td>Professora </td>
</tr>
<tr>
<td>Jéferson </td>
<td>34 </td>
<td>Churrasco </td>
<td>Agrônomo </td>
</tr>
<tr>
<td>Antônio </td>
<td>5 </td>
<td>Purê de batata </td>
<td>Desempregado</td>
</tr>
<tr>
<td>Ana </td>
<td>21 </td>
<td> Pêra</td>
<td> Engenheira</td>
</tr>
</tbody>
</table>
JavaScript
function removeAccents(data) {
return data
.replace(/έ/g, 'ε')
.replace(/[ύϋΰ]/g, 'υ')
.replace(/ό/g, 'ο')
.replace(/ώ/g, 'ω')
.replace(/ά/g, 'α')
.replace(/[ίϊΐ]/g, 'ι')
.replace(/ή/g, 'η')
.replace(/\n/g, ' ')
.replace(/[áÁ]/g, 'a')
.replace(/[éÉ]/g, 'e')
.replace(/[íÍ]/g, 'i')
.replace(/[óÓ]/g, 'o')
.replace(/[úÚ]/g, 'u')
.replace(/ê/g, 'e')
.replace(/î/g, 'i')
.replace(/ô/g, 'o')
.replace(/è/g, 'e')
.replace(/ï/g, 'i')
.replace(/ü/g, 'u')
.replace(/ã/g, 'a')
.replace(/õ/g, 'o')
.replace(/ç/g, 'c')
.replace(/ì/g, 'i');
}
var searchType = jQuery.fn.DataTable.ext.type.search;
searchType.string = function (data) {
return !data ?
'' :
typeof data === 'string' ?
removeAccents(data) :
data;
};
searchType.html = function (data) {
return !data ?
'' :
typeof data === 'string' ?
removeAccents(data.replace(/<.*?>/g, '')) :
data;
};
jQuery('#people-data').DataTable();
jQuery(document).ready(function () {
var table = $('#people-data').DataTable();
// Remove accented character from search input as well
jQuery('#people-data_filter input').keyup(function () {
table
.search(
$.fn.DataTable.ext.type.search.string(this.value)
)
.draw()
});
});