首页 > 解决方案 > 忽略 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');

标签: javascriptsearchdatatabledatatablesspecial-characters

解决方案


您可以使用重音字符(变音符号)规范化列中的数据,或者您可以将隐藏列添加到表中,这是通过使用变音符号对现有列中的字符串进行规范化来计算的

const ds = "João";
ds.normalize('NFD').replace(/[\u0300-\u036f]/g, ""); // "Joao"

推荐阅读