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:如何使用单元格的值而不是基于正在呈现的值进行搜索?的主要内容,如果未能解决你的问题,请参考以下文章