jQuery dataTables search - 设置搜索过滤器以仅获取与搜索值一样的匹配

时间:2015-03-31 02:28:30

标签: jquery search filtering jquery-datatables

如果您在数据表中搜索一个单词,它将在单词中的任何位置找到。

示例:搜索" b"在表格中:

 banana
 subway
 sub

将返回全部3。

我怎么能设置只获得" banana"如果我输入" b"在搜索领域。

2 个答案:

答案 0 :(得分:3)

我敢于假设您正在考虑使用jQuery dataTables(已将标签替换为正确的标签。

如果要过滤列数据的开头,可以创建自定义过滤功能,而不是搜索/过滤整个字符串。像这样,它也不区分大小写:

$.fn.dataTable.ext.search.push(
    function( settings, data, dataIndex ) {
        //$('#example_filter input') is the default #example filter box
        var term = $('#example_filter input')
                .val()
                .toLowerCase();

        for (var i=0;i<data.length;i++) {
            value = data[i]
                .toString()
                .toLowerCase();

            if (value.indexOf(term)==0) {
                return true;
            }
        };
        return false;
    }
);

参见演示 - &gt;的 http://jsfiddle.net/v1yguqLz/

注意:这应该根据文档以及dataTables如何在过去的日子里工作&#34;是一个regular expression search的任务,但我无法通过table.search()table.column().search()来完成最简单的正则表达式示例。已尝试使用 1.10.0 1.10.5 (最新版本)。我想这与这个bug报道有关 - &gt; https://github.com/DataTables/DataTables/issues/341 以及向后兼容性。

另一方面,如果您只想过滤列数据的开头,那么自定义过滤功能无论如何都是完美的解决方案。

答案 1 :(得分:0)

我为其中一个列设置了单独的搜索字段,这是我的搜索开头解决方案:

    vm.searchForLocation = function() {
        vm.dtInstance.DataTable.column(2)
            .search("^"+vm.locationCode, true, false )
            .draw();
    }