JQuery DataTables – Alphabétique et recherche insensible aux accentuation

Lors de l'utilisation de jQuery DataTables, il est possible de faire des recherches insensibles à l'accent lors de l'utilisation du filtre? Par exemple, lorsque j'ai mis le personnage 'e', ​​j'aimerais rechercher tous les mots avec 'e' ou 'é', 'è'.

Quelque chose qui est venu à l'esprit est de normaliser les cordes et de les placer dans une colonne distincte, cachée, mais cela ne résoudrait pas le problème de l'alphabétisation.

MODIFIER

J'ai essayé ce qui suit:

$.fn.dataTableExt.ofnSearch = function ( data ) { return ! data ? '' : typeof data === 'string' ? data .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, 'c' ) : data; }; 

JS File Gist

Vous êtes tellement proche de votre édition, ce que vous avez essayé, sauf que vous manquez la chose importante: Définir la "portée" ou le type de votre plugin de filtre . La fonction n'est jamais appelée, n'est-ce pas? C'est parce que le plugin n'est pas associé à un sType .

Pour que votre code fonctionne, il suffit de déclarer le plugin comme ceci:

 $.fn.dataTableExt.ofnSearch['string'] = function ( data ) { return ! data ? '' : typeof data === 'string' ? .. .. } 

Voir ce violon -> http://jsfiddle.net/Y5ycM/ J'ai transformé des colonnes "Internet Explorer" en "Internet éxplorer", certains "Opera" vers "öpera", etc. Essayez de rechercher ex ou op .


Voir https://datatables.net/development/filtering , section "Filtrage des colonnes type":

Lorsque vous affectez le sType à une colonne (ou que vous l'avez automatiquement détecté par DataTables ou un plug-in de détection de type), vous l'utiliserez généralement pour le tri personnalisé, mais il peut également être utilisé pour fournir des options de filtrage personnalisées. Cela se fait en ajoutant des fonctions à l'objet avec un nom de paramètre qui correspond au sType pour cette colonne cible :

Je suppose qu'il y a ici une faute de frappe ou un oubli dans la documentation, dit-il

$.fn.dataTableExt.ofnSearch mais doit être correctement $.fn.dataTableExt.ofnSearch[sType] , comme l'indique l'exemple juste après.


Mise à jour . Allan Jardine confirme que c'est un bug dans 1.9.4 ici :

Yup – bug dans 1.9.4. 1.9.4 a rompu cette partie du code malheureusement. Cela affecte également la suppression des balises HTML du filtre, car cela utilisait le même mécanisme. Il est fixé dans les 1,10 bêta cependant.

Dans ce sujet, expliquez ceci, l'astuce consiste à remplacer des caractères étranges avec un caractère normal (pas de caractère d'accent). Pour ainsi dire.

 $.fn.DataTable.ext.type.search.string = function ( data ) { return ! data ? '' : typeof data === 'string' ? data .replace( /\n/g, " " ) .replace( /[éêè]/g, 'e' ) : //<------- remplace éêè by e data; } 

Il y a un autre exemple

 jQuery.fn.DataTable.ext.type.search.string = function ( data ) { return ! data ? '' : typeof data === 'string' ? data .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, 'c' ) : data; }; 

JQuery v: 2.1.0
Jquery.dataTables.min.js v: 1.10.7
DataTables.responsive.min.js v: 1.0.6

J'ai utilisé le plugin neutraliser l'accent ici (merci Allan Jardine):
http://www.datatables.net/plug-ins/filtering/type-based/accent-neutralise

Et j'ai fait des adaptations minimales pour mes besoins:

J'ai fait un exemple combinant les réponses dans: http://jsfiddle.net/xebtyaeL/5/

 jQuery.fn.DataTable.ext.type.search.string = function ( data ) { return ! data ? '' : typeof data === 'string' ? 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' ) : data; }; var tabla = jQuery('#datatable-table').dataTable( { } ); new jQuery.fn.dataTable.Responsive( tabla ); jQuery(document).ready(function() { var table = jQuery('#datatable-table').DataTable(); // Remove accented character from search input as well jQuery('#datatable-table_filter input').keyup( function () { table .search( jQuery.fn.DataTable.ext.type.search.string( this.value ) ) .draw(); } ); } ); 

Je pense que la solution de Jean-Sébastien (désolé, je ne peux pas tout simplement commenter) est la seule qui réponde à la question. Si vous tapez "Explorer" ou "éxplorer", il devrait renvoyer "Explorer" ET "éxplorer". Dans les suggestions précédentes, si l'une d'entre elles "éxplorer", la recherche ne renverrait rien.

L'astuce est que sa solution manque d'une partie dans la fonction de touche.

 $('#example_filter input[type=search]').keyup(function () { var table = $('#example').DataTable(); table.search( $.fn.DataTable.ext.type.search.string(accents_supr(this.value)) ).draw(); }); 

Voir cette fourchette pour une démo de travail. http://jsfiddle.net/syvo/caxj9koL/

 // (Long) list of all accented characters and their folded equivalents var accent_map = { '\n':' ','ẚ':'a','Á':'a','á':'a','À':'a','à':'a','Ă':'a','ă':'a','Ắ':'a','ắ':'a','Ằ':'a','ằ':'a','Ẵ':'a','ẵ':'a','Ẳ':'a','ẳ':'a','Â':'a','â':'a','Ấ':'a','ấ':'a','Ầ':'a','ầ':'a','Ẫ':'a','ẫ':'a','Ẩ':'a','ẩ':'a','Ǎ':'a','ǎ':'a','Å':'a','å':'a','Ǻ':'a','ǻ':'a','Ä':'a','ä':'a','Ǟ':'a','ǟ':'a','Ã':'a','ã':'a','Ȧ':'a','ȧ':'a','Ǡ':'a','ǡ':'a','Ą':'a','ą':'a','Ā':'a','ā':'a','Ả':'a','ả':'a','Ȁ':'a','ȁ':'a','Ȃ':'a','ȃ':'a','Ạ':'a','ạ':'a','Ặ':'a','ặ':'a','Ậ':'a','ậ':'a','Ḁ':'a','ḁ':'a','Ⱥ':'a','ⱥ':'a','Ǽ':'a','ǽ':'a','Ǣ':'a','ǣ':'a','Ḃ':'b','ḃ':'b','Ḅ':'b','ḅ':'b','Ḇ':'b','ḇ':'b','Ƀ':'b','ƀ':'b','ᵬ':'b','Ɓ':'b','ɓ':'b','Ƃ':'b','ƃ':'b','Ć':'c','ć':'c','Ĉ':'c','ĉ':'c','Č':'c','č':'c','Ċ':'c','ċ':'c','Ç':'c','ç':'c','Ḉ':'c','ḉ':'c','Ȼ':'c','ȼ':'c','Ƈ':'c','ƈ':'c','ɕ':'c','Ď':'d','ď':'d','Ḋ':'d','ḋ':'d','Ḑ':'d','ḑ':'d','Ḍ':'d','ḍ':'d','Ḓ':'d','ḓ':'d','Ḏ':'d','ḏ':'d','Đ':'d','đ':'d','ᵭ':'d','Ɖ':'d','ɖ':'d','Ɗ':'d','ɗ':'d','Ƌ':'d','ƌ':'d','ȡ':'d','ð':'d','É':'e','Ə':'e','Ǝ':'e','ǝ':'e','é':'e','È':'e','è':'e','Ĕ':'e','ĕ':'e','Ê':'e','ê':'e','Ế':'e','ế':'e','Ề':'e','ề':'e','Ễ':'e','ễ':'e','Ể':'e','ể':'e','Ě':'e','ě':'e','Ë':'e','ë':'e','Ẽ':'e','ẽ':'e','Ė':'e','ė':'e','Ȩ':'e','ȩ':'e','Ḝ':'e','ḝ':'e','Ę':'e','ę':'e','Ē':'e','ē':'e','Ḗ':'e','ḗ':'e','Ḕ':'e','ḕ':'e','Ẻ':'e','ẻ':'e','Ȅ':'e','ȅ':'e','Ȇ':'e','ȇ':'e','Ẹ':'e','ẹ':'e','Ệ':'e','ệ':'e','Ḙ':'e','ḙ':'e','Ḛ':'e','ḛ':'e','Ɇ':'e','ɇ':'e','ɚ':'e','ɝ':'e','Ḟ':'f','ḟ':'f','ᵮ':'f','Ƒ':'f','ƒ':'f','Ǵ':'g','ǵ':'g','Ğ':'g','ğ':'g','Ĝ':'g','ĝ':'g','Ǧ':'g','ǧ':'g','Ġ':'g','ġ':'g','Ģ':'g','ģ':'g','Ḡ':'g','ḡ':'g','Ǥ':'g','ǥ':'g','Ɠ':'g','ɠ':'g','Ĥ':'h','ĥ':'h','Ȟ':'h','ȟ':'h','Ḧ':'h','ḧ':'h','Ḣ':'h','ḣ':'h','Ḩ':'h','ḩ':'h','Ḥ':'h','ḥ':'h','Ḫ':'h','ḫ':'h','H':'h','̱':'h','ẖ':'h','Ħ':'h','ħ':'h','Ⱨ':'h','ⱨ':'h','Í':'i','í':'i','Ì':'i','ì':'i','Ĭ':'i','ĭ':'i','Î':'i','î':'i','Ǐ':'i','ǐ':'i','Ï':'i','ï':'i','Ḯ':'i','ḯ':'i','Ĩ':'i','ĩ':'i','İ':'i','i':'i','Į':'i','į':'i','Ī':'i','ī':'i','Ỉ':'i','ỉ':'i','Ȉ':'i','ȉ':'i','Ȋ':'i','ȋ':'i','Ị':'i','ị':'i','Ḭ':'i','ḭ':'i','I':'i','ı':'i','Ɨ':'i','ɨ':'i','Ĵ':'j','ĵ':'j','J':'j','̌':'j','ǰ':'j','ȷ':'j','Ɉ':'j','ɉ':'j','ʝ':'j','ɟ':'j','ʄ':'j','Ḱ':'k','ḱ':'k','Ǩ':'k','ǩ':'k','Ķ':'k','ķ':'k','Ḳ':'k','ḳ':'k','Ḵ':'k','ḵ':'k','Ƙ':'k','ƙ':'k','Ⱪ':'k','ⱪ':'k','Ĺ':'a','ĺ':'l','Ľ':'l','ľ':'l','Ļ':'l','ļ':'l','Ḷ':'l','ḷ':'l','Ḹ':'l','ḹ':'l','Ḽ':'l','ḽ':'l','Ḻ':'l','ḻ':'l','Ł':'l','ł':'l','Ł':'l','̣':'l','ł':'l','̣':'l','Ŀ':'l','ŀ':'l','Ƚ':'l','ƚ':'l','Ⱡ':'l','ⱡ':'l','Ɫ':'l','ɫ':'l','ɬ':'l','ɭ':'l','ȴ':'l','Ḿ':'m','ḿ':'m','Ṁ':'m','ṁ':'m','Ṃ':'m','ṃ':'m','ɱ':'m','Ń':'n','ń':'n','Ǹ':'n','ǹ':'n','Ň':'n','ň':'n','Ñ':'n','ñ':'n','Ṅ':'n','ṅ':'n','Ņ':'n','ņ':'n','Ṇ':'n','ṇ':'n','Ṋ':'n','ṋ':'n','Ṉ':'n','ṉ':'n','Ɲ':'n','ɲ':'n','Ƞ':'n','ƞ':'n','ɳ':'n','ȵ':'n','N':'n','̈':'n','n':'n','̈':'n','Ó':'o','ó':'o','Ò':'o','ò':'o','Ŏ':'o','ŏ':'o','Ô':'o','ô':'o','Ố':'o','ố':'o','Ồ':'o','ồ':'o','Ỗ':'o','ỗ':'o','Ổ':'o','ổ':'o','Ǒ':'o','ǒ':'o','Ö':'o','ö':'o','Ȫ':'o','ȫ':'o','Ő':'o','ő':'o','Õ':'o','õ':'o','Ṍ':'o','ṍ':'o','Ṏ':'o','ṏ':'o','Ȭ':'o','ȭ':'o','Ȯ':'o','ȯ':'o','Ȱ':'o','ȱ':'o','Ø':'o','ø':'o','Ǿ':'o','ǿ':'o','Ǫ':'o','ǫ':'o','Ǭ':'o','ǭ':'o','Ō':'o','ō':'o','Ṓ':'o','ṓ':'o','Ṑ':'o','ṑ':'o','Ỏ':'o','ỏ':'o','Ȍ':'o','ȍ':'o','Ȏ':'o','ȏ':'o','Ơ':'o','ơ':'o','Ớ':'o','ớ':'o','Ờ':'o','ờ':'o','Ỡ':'o','ỡ':'o','Ở':'o','ở':'o','Ợ':'o','ợ':'o','Ọ':'o','ọ':'o','Ộ':'o','ộ':'o','Ɵ':'o','ɵ':'o','Ṕ':'p','ṕ':'p','Ṗ':'p','ṗ':'p','Ᵽ':'p','Ƥ':'p','ƥ':'p','P':'p','̃':'p','p':'p','̃':'p','ʠ':'q','Ɋ':'q','ɋ':'q','Ŕ':'r','ŕ':'r','Ř':'r','ř':'r','Ṙ':'r','ṙ':'r','Ŗ':'r','ŗ':'r','Ȑ':'r','ȑ':'r','Ȓ':'r','ȓ':'r','Ṛ':'r','ṛ':'r','Ṝ':'r','ṝ':'r','Ṟ':'r','ṟ':'r','Ɍ':'r','ɍ':'r','ᵲ':'r','ɼ':'r','Ɽ':'r','ɽ':'r','ɾ':'r','ᵳ':'r','ß':'s','Ś':'s','ś':'s','Ṥ':'s','ṥ':'s','Ŝ':'s','ŝ':'s','Š':'s','š':'s','Ṧ':'s','ṧ':'s','Ṡ':'s','ṡ':'s','ẛ':'s','Ş':'s','ş':'s','Ṣ':'s','ṣ':'s','Ṩ':'s','ṩ':'s','Ș':'s','ș':'s','ʂ':'s','S':'s','̩':'s','s':'s','̩':'s','Þ':'t','þ':'t','Ť':'t','ť':'t','T':'t','̈':'t','ẗ':'t','Ṫ':'t','ṫ':'t','Ţ':'t','ţ':'t','Ṭ':'t','ṭ':'t','Ț':'t','ț':'t','Ṱ':'t','ṱ':'t','Ṯ':'t','ṯ':'t','Ŧ':'t','ŧ':'t','Ⱦ':'t','ⱦ':'t','ᵵ':'t','ƫ':'t','Ƭ':'t','ƭ':'t','Ʈ':'t','ʈ':'t','ȶ':'t','Ú':'u','ú':'u','Ù':'u','ù':'u','Ŭ':'u','ŭ':'u','Û':'u','û':'u','Ǔ':'u','ǔ':'u','Ů':'u','ů':'u','Ü':'u','ü':'u','Ǘ':'u','ǘ':'u','Ǜ':'u','ǜ':'u','Ǚ':'u','ǚ':'u','Ǖ':'u','ǖ':'u','Ű':'u','ű':'u','Ũ':'u','ũ':'u','Ṹ':'u','ṹ':'u','Ų':'u','ų':'u','Ū':'u','ū':'u','Ṻ':'u','ṻ':'u','Ủ':'u','ủ':'u','Ȕ':'u','ȕ':'u','Ȗ':'u','ȗ':'u','Ư':'u','ư':'u','Ứ':'u','ứ':'u','Ừ':'u','ừ':'u','Ữ':'u','ữ':'u','Ử':'u','ử':'u','Ự':'u','ự':'u','Ụ':'u','ụ':'u','Ṳ':'u','ṳ':'u','Ṷ':'u','ṷ':'u','Ṵ':'u','ṵ':'u','Ʉ':'u','ʉ':'u','Ṽ':'v','ṽ':'v','Ṿ':'v','ṿ':'v','Ʋ':'v','ʋ':'v','Ẃ':'w','ẃ':'w','Ẁ':'w','ẁ':'w','Ŵ':'w','ŵ':'w','W':'w','̊':'w','ẘ':'w','Ẅ':'w','ẅ':'w','Ẇ':'w','ẇ':'w','Ẉ':'w','ẉ':'w','Ẍ':'x','ẍ':'x','Ẋ':'x','ẋ':'x','Ý':'y','ý':'y','Ỳ':'y','ỳ':'y','Ŷ':'y','ŷ':'y','Y':'y','̊':'y','ẙ':'y','Ÿ':'y','ÿ':'y','Ỹ':'y','ỹ':'y','Ẏ':'y','ẏ':'y','Ȳ':'y','ȳ':'y','Ỷ':'y','ỷ':'y','Ỵ':'y','ỵ':'y','ʏ':'y','Ɏ':'y','ɏ':'y','Ƴ':'y','ƴ':'y','Ź':'z','ź':'z','Ẑ':'z','ẑ':'z','Ž':'z','ž':'z','Ż':'z','ż':'z','Ẓ':'z','ẓ':'z','Ẕ':'z','ẕ':'z','Ƶ':'z','ƶ':'z','Ȥ':'z','ȥ':'z','ʐ':'z','ʑ':'z','Ⱬ':'z','ⱬ':'z','Ǯ':'z','ǯ':'z','ƺ':'z','2':'2','6':'6','B':'B','F':'F','J':'J','N':'N','R':'R','V':'V','Z':'Z','b':'b','f':'f','j':'j','n':'n','r':'r','v':'v','z':'z','1':'1','5':'5','9':'9','A':'A','E':'E','I':'I','M':'M','Q':'Q','U':'U','Y':'Y','a':'a','e':'e','i':'i','m':'m','q':'q','u':'u','y':'y','0':'0','4':'4','8':'8','D':'D','H':'H','L':'L','P':'P','T':'T','X':'X','d':'d','h':'h','l':'l','p':'p','t':'t','x':'x','3':'3','7':'7','C':'C','G':'G','K':'K','O':'O','S':'S','W':'W','c':'c','g':'g','k':'k','o':'o','s':'s','w':'w' }; function accent_fold (s) { if (!s) { return ''; } var ret = ''; for (var i = 0; i < s.length; i++) { ret += accent_map[s.charAt(i)] || s.charAt(i); } return ret; }; $.fn.dataTableExt.ofnSearch = function (data) { return accent_fold(data); }; 

J'ai modifié le code original de votre question pour utiliser une fonction de pliage d'accent (disponible sur Github) . Vous pourriez également être intéressé par l'article original de "A List Apart" .

Pour les futurs lecteurs,

L'utilisation d'accent-neutralize résout uniquement une partie du problème de la recherche d'une manière insensible à la casse. Le plugin ne remplace que certains caractères accentués à des caractères non accentués dans la table. Vous devrez également supprimer les accents de votre saisie de texte de recherche.

Un autre problème que j'ai eu, c'est que le plugin ne remplace que les lettres minuscules, alors je suis allé de l'avant et j'ai ajouté un mappage supplémentaire pour les lettres accentuées les plus communes en français, en fonction de cette autre excellente solution: Supprimez les accents / diacritiques dans une chaîne JavaScript

Accent-neutralize-french.js

 function accents_supr(data){ return !data ? '' : typeof data === 'string' ? data .replace(/\n/g, ' ') .replace(/[\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250]/g, 'a') .replace(/[\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD]/g, 'e') .replace(/[\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131]/g, 'i') .replace(/[\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275]/g, 'o') .replace(/[\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289]/g, 'u') .replace(/[\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F]/g, 'A') .replace(/[\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E]/g, 'E') .replace(/[\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197]/g, 'I') .replace(/[\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C]/g, 'O') .replace(/[\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244]/g, 'U') .replace(/ç/g, 'c') .replace(/Ç/g, 'C') : data; }; jQuery.fn.DataTable.ext.type.search['string'] = function(data) { return accents_supr(data); }; 

Dans votre page avec une table de données:

  // Remove accented character from search input as well $('#dt_basic_filter input[type=search]').keyup( function () { var table = $('#dt_basic').DataTable(); table.search( jQuery.fn.DataTable.ext.type.search.string(this.value) ).draw(); } ); 

Commentaires supplémentaires sur le filtrage des colonnes: les commentaires ci-dessus ne fonctionneront que si la colonne à filtrer est du type "chaîne" (le type de colonne DataTables défini ici ).

Si la colonne contient des balises HTML, DataTables lib l'étiquette automatiquement comme type "html" et déclenchera le rappel de recherche associé sur ce type. Par conséquent, pour que le filtrage s'applique correctement, le rappel doit être enregistré sur le type "html":

 $.fn.DataTable.ext.type.search['html'] = function(data) { return unaccent(data); }; 

Où inaccessible est une fonction qui supprime les accents / diacritiques / caractères étranges de la chaîne d'entrée.