javascript - 自定义 jquery.datatables 插件以使用正则表达式对两列进行过滤

标签 javascript jquery regex datatables

我正在使用 jquery datatables 插件,发现 here 。有两个名为“New GL”和“Old GL”的列。数据表插件有一个名为搜索的内置功能,它可以根据您在文本框中输入的关键字过滤表中的数据。

这是我的数据当前的样子: enter image description here

当我在我想要的文本框中输入“40.88.1010.0”或“40.88.600000.05”时 这条记录才会出现。 enter image description here

相同的规则适用于所有记录。我希望搜索继续使用一个文本框过滤所有列,但对于“New GL”和“Old GL”列...我希望用户能够同时使用“-”和“.”。字符。

我最初的想法是,如果数据表有正则表达式选项,它就会起作用,因为“。”正则表达式中是任何字符。但我只想将规则应用于这两列。

使用数据表插件可以做到这一点吗?

这是我当前的数据表初始化代码:

$(document).ready(function () {
    var table = $('#datatable').DataTable({ "iDisplayLength": 50 });
});

最佳答案

SOLUTION

您需要实现如下所示的自定义搜索功能。

此方法的缺点是其他列中的内容也会以相同的方式进行搜索,即使用 .- 字符进行搜索。

$(document).ready(function () {
    var table = $('#datatable').DataTable({ 
       "pageLength": 50 
    });

    $('.dataTables_filter input', table.table().container())
        .off('.DT')
        .on('keyup.DT cut.DT paste.DT input.DT search.DT', function (e) {
            // If the length is 3 or more characters, or the user pressed ENTER, search
            if(this.value.length > 0){            
                // Escape the expression so we can perform a regex match
                var val = $.fn.dataTable.util.escapeRegex(this.value);

                // Add regular expression to match both . and - characters
                val = val.replace(/(\\\-|\\\.)/g, "[\\\.\\\-]");

                // Call the API search function
                table.search(val, true, false).draw();

            } else {
                // Ensure we clear the search if they backspace far enough
                table.search("").draw();
            }    
        });
});

DEMO

参见this jsFiddle用于代码和演示。

关于javascript - 自定义 jquery.datatables 插件以使用正则表达式对两列进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34620183/

相关文章:

javascript - 如何在多列中本地添加数据?

Python 正则表达式可选捕获组,具有正向前瞻功能

jquery - MVC3 使用 JQuery Ajax 将 ViewModel 传递给 Controller ​​方法

javascript - 如何在使用js/jquery加载图像后获取图像大小(内存)

javascript - jQuery 文本扩展 : max height and scrollbar

arrays - Swift 正则表达式和分隔符

c++ - 标记一个字符串,不包括引号内的定界符

javascript - 有关 Javascript 对象模型的资源?

javascript - 根据另一个 json 数组将 observableArray 映射到 Multiple SELECT

javascript - 选中复选框并在 localStorage jQuery 中隐藏输入字段