如何解决数据表jQuery:如何使用单元格的值而不是根据呈现的值进行搜索?
我有一个数据表,可以重新渲染一个单元格,以星号表示其值。
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
,它将显示带有许可证“ license”的行。问题是,如果我键入lice
,则什么都不会显示,而且我知道是因为数据表使用显示的值搜索表。
为避免这种情况,我查看了columns.data
上数据表的documentation
现在我在列上的代码如下:
columns: [{
data: 'email'
},{
data: (row,type) => {
if (type === 'filter') return row.license;
return row.license;
},
...而且我的问题仍然存在。
license
仍然不可搜索,如果搜索*
,它将返回我的json数据中的每一行。
据我了解,(row,type,val,meta)
的数据功能从json返回数据,然后render
将修饰语应用于所述数据。然后,如果type === 'filter'
(在搜索时触发),则应在渲染之前返回未修改的值。
我很困惑。
解决方法
尝试删除render
并在数据函数内部返回tempHideKeys()
。
它应该像这样:
// ...
{
data: (row,type) => {
if (type === 'filter') return row.license;
return tempHideKeys(row.license);
},// Remove this line below
// render: (data) => tempHideKeys(data)
},// ...
我在发布问题后就找到了解决问题的办法,哈哈。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。