javascript - 忽略 DataTables 搜索中的特殊字符
问题描述
我已经建立了一个简单的数据表,其中包含员工姓名和各自的部门。
它工作得很好,但现在我意识到搜索正在以不同的方式过滤具有特殊字符的字符串。
例如,有 4 名员工名为 Joao,其中两名注册为 João,另外两名注册为 Joao,没有 ã。
我怎么能忽略这种差异,通过输入“joao”来调出他们四个?
我找到了一个插件 DataTable 网站,但我无法让它运行,我不知道放在哪里:
https://datatables.net/plug-ins/filtering/type-based/accent-neutralise
这是 DataTable 的构造:
$('#dataTable').DataTable({
language:{
"sEmptyTable": "Nenhum registro encontrado",
"sInfo": "Mostrando de _START_ até _END_ de _TOTAL_ registros",
"sInfoEmpty": "Mostrando 0 até 0 de 0 registros",
"sInfoFiltered": "(Filtrados de _MAX_ registros)",
"sInfoPostFix": "",
"sInfoThousands": ".",
"sLengthMenu": "_MENU_ resultados por página",
"sLoadingRecords": "Carregando...",
"sProcessing": "Processando...",
"sZeroRecords": "Nenhum registro encontrado",
"sSearch": "Pesquisar",
"oPaginate": {
"sNext": "Próximo",
"sPrevious": "Anterior",
"sFirst": "Primeiro",
"sLast": "Último"
},
"oAria": {
"sSortAscending": ": Ordenar colunas de forma ascendente",
"sSortDescending": ": Ordenar colunas de forma descendente"
},
dom:"iptrt",
}
});
$('.dataTables_filter').addClass('pull-left');
$('.dataTables_filter input').addClass('filter-input');
$('.dataTables_length').addClass('pull-right');
解决方案
您可以使用重音字符(变音符号)规范化列中的数据,或者您可以将隐藏列添加到表中,这是通过使用变音符号对现有列中的字符串进行规范化来计算的
const ds = "João";
ds.normalize('NFD').replace(/[\u0300-\u036f]/g, ""); // "Joao"
推荐阅读
- hyperledger-composer - Hyperledger Composer - 资产中的日期时间存储
- appium-android - Windows 10:appium doctor --android 显示 --android-coverage 期待参数
- xml - XML 文件是否应该符合 XSD 的所有元素?
- css - 如何在滚动框中制作具有固定宽度但相对高度的元素
- php - setcookie() 返回 false。会话也不起作用
- dialogflow-es - 在 Google Home 上播放音乐
- java - 使用maven在里面创建带有xml文件的jar文件
- python - 示例龙卷风网络请求
- java - Java 整数流
- java - 使用 TDD 的 RockPaperScissors 游戏(三局两胜)