DataTables jQuery:如何使用单元格的值而不是基于正在呈现的值进行搜索?

Posted

技术标签:

【中文标题】DataTables jQuery:如何使用单元格的值而不是基于正在呈现的值进行搜索?【英文标题】:DataTables jQuery: how to search using the value of the cells and not based from the value that is being rendered? 【发布时间】:2021-02-15 17:13:37 【问题描述】:

我有一个数据表,它重新渲染一个单元格以用星号显示它的值。

目前看起来像这样:

json 数据如下所示:


    email: "test@email.com",
    license: "license",
    expiration: "May 22, 2032"
    ... some other data

我的 javascript 是这样编码的:

$(document).ready(function() 
  table = $('#datatable').DataTable(
    ajax: 'path/to/my/json/response.php',
    columns: [
        data: 'email'
      ,
      
        data: 'license',
        render: (data) => tempHideKeys(data)
      ,
      
        data: 'expiration'
      ,
    ],
  )
);

function tempHideKeys(string) 
  let snippet = string.match(/^.3/);
  let res = snippet + '*'.repeat(10);

  return res;

我想在数据表的默认搜索框中输入单词license,它将显示带有许可证“许可证”的行。问题是,如果我输入 lice 什么都没有显示,我知道因为数据表会使用显示的值搜索表。

为了在一定程度上规避这一点,我查看了columns.data 上的数据表的documentation

现在我在列上的代码如下所示:

    columns: [
        data: 'email'
      ,
      
        data: (row, type) => 
            if (type === 'filter') return row.license;
            
            return row.license;
        ,
        render: (data) => tempHideKeys(data)
      ,
      
        data: 'expiration'
      ,
    ],

...我的问题仍然存在。

license 仍然无法搜索,如果搜索 * 它会返回我的 json 数据中的每一行。

据我了解,(row, type, val, meta) 的数据函数从 json 中返回数据,然后render 将化妆品应用于所述数据。那么如果type === 'filter'(搜索时触发),它应该在渲染之前返回未触及的值。

我只是困惑。

【问题讨论】:

【参考方案1】:

尝试删除 render 并在数据函数中返回 tempHideKeys()

应该是这样的:

// ...
      
        data: (row, type) => 
            if (type === 'filter') return row.license;
            
            return tempHideKeys(row.license);
        ,
        // Remove this line below
        // render: (data) => tempHideKeys(data)
      ,
// ...

我在发布问题后立即找到了解决问题的方法,哈哈。

【讨论】:

以上是关于DataTables jQuery:如何使用单元格的值而不是基于正在呈现的值进行搜索?的主要内容,如果未能解决你的问题,请参考以下文章

如何将过滤器和订单数据设置到 DataTables 单元格

Jquery Datatables Ajax方法单元格对齐

jQuery DataTables 遍历行并更改单元格背景

jquery DataTables - 更改单元格的值而不仅仅是显示值

排序(字母顺序)以忽略空单元格:dataTables

jQuery DataTables TableTools Export - 获取复选框或单选项目的值