【问题标题】:jQuery DataTable filtering - so confusingjQuery DataTable 过滤 - 太混乱了
【发布时间】:2015-04-24 00:51:31
【问题描述】:

我是 https://datatables.net/ 上的 jQuery dataTables 插件的新手

我正在尝试为表格实现自定义过滤器:

基本上,当我单击一个按钮时,一个自定义过滤函数将测试所有行的第 1 列的值(数值),如果列中的值

概念应该很简单,但是我似乎找不到正确的API使用方法:

  • column.filter() 返回一个列值数组
  • column.search() 只能接受文本数据(不是函数)

什么API可以达到效果?

有没有像下面这样的?

var api = $('#table').DataTable();

api.column(1).data().somefilterfunction(function (val, ind) {
    return parseFloat(val) < 50;
}).draw();

【问题讨论】:

    标签: datatables


    【解决方案1】:

    您是否在文档中看到过这篇文章 -> https://datatables.net/examples/plug-ins/range_filtering.html ??

    您可以即时创建自定义过滤功能,由按钮触发:

    <button id="filter">filter < 50</button>
    

    脚本:

    $("#filter").click(function() {
        $.fn.dataTable.ext.search.push(
            function( settings, data, dataIndex ) {
                return parseFloat(data[0])<50
                    ? true
                    : false
            }     
        );
        table.draw();
        $.fn.dataTable.ext.search.pop();
    });
    

    演示 -> http://jsfiddle.net/dpwgqs2o/

    请注意,过滤器是在单击处理程序本身内部创建的,并在绘制表格后再次删除。这使得过滤器是临时的,即当用户单击列标题时,过滤器被清除。如果您想要一个永久过滤器,请将过滤器设为全局并且不要将其删除。

    【讨论】:

    • 如果这对我不起作用,有什么解释吗?推送的函数永远不会触发
    • @JohnSmith,你是用dataTable(),小写d初始化数据表吗?
    • @JohnSmith,您可以将您的代码粘贴到上面的小提琴中,让我检查一下(粘贴代码,更新并告诉新网址是什么)
    • 如果我的页面中有多个数据表,它似乎正在申请我页面中的所有数据表。我怎样才能将此搜索限制为仅针对一个数据表。提前谢谢你
    • @Azeez,没有内置逻辑,过滤器被推送到全局数组。但你可以看看这个 -> stackoverflow.com/questions/52331479/…(我知道,迟到的评论)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多