【问题标题】:Ignoring special characters in DataTables search忽略 DataTables 搜索中的特殊字符
【发布时间】:2018-11-30 12:00:50
【问题描述】:

我已经建立了一个简单的数据表,其中包含员工姓名和各自的部门。

它工作得很好,但现在我意识到搜索正在以不同的方式过滤具有特殊字符的字符串。

例如,有 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');

【问题讨论】:

    标签: javascript search datatable datatables special-characters


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您抽出宝贵时间,丹尼斯,但我不知道如何实施您的提示,把它放在哪里
    【解决方案2】:

    只需在您的父脚本中添加到 Accent-neutralise.js 脚本的链接,在指向 Datatables 库本身的链接下方。例如,如果您从 CDN 加载(而不是在本地托管数据表):

    <head>
        <title>My Page with a Datatable</title>
        <link rel="stylesheet" href="https://cdn.datatables.net/1.11.3/css/jquery.dataTables.min.css"/>
        <script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.js"></script>
        <script type="text/javascript" src="https://cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js"></script>
        <script type="text/javascript" src="https://cdn.datatables.net/plug-ins/1.11.3/filtering/type-based/accent-neutralise.js"></script>
    </head>
    

    引用脚本的documentation page“这种基于类型的搜索插件将 DataTables 中的内置字符串格式化程序替换为一个函数,该函数将用非重音字符替换重音字符,以便快速轻松地过滤。”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-15
      • 2010-11-20
      • 1970-01-01
      • 2011-05-16
      • 1970-01-01
      • 1970-01-01
      • 2013-12-11
      相关资源
      最近更新 更多