我正在使用数据表来显示不同类型的事件列表。除了我需要的默认全局文本搜索 1.按事件类型过滤列表 2.按日期范围过滤列表(仅显示今天 - >无穷大) 3.保存当前会话的表状态。
状态按预期除之外保存,以便日期范围搜索始终重置。我错过了什么或自定义搜索功能超出了状态保存的范围?这是jQuery中的相关代码:
拳头我通过提供的方法添加自己的搜索功能。除了状态未保存
之外,这有效// Extend search()
var threshold_timestamp = xxxxxxxxxxxx // set for beginning of today)
$.fn.dataTable.ext.search.push(
function( settings, data, dataIndex) {
var timestamp = parseInt(data[1]); // event date timestamp
if (timestamp > threshold_timestamp) {
return true;
}
return false;
}
);
然后我为用于在事件类型选项('','Event','Sports','Dance'...)和按钮用户之间切换的select
添加一个监听器来打开/关闭日期范围过滤器
$('#filter-by-type').on('change', function() {
table.columns(0).search( $(this).val() ).draw();
});
$('#dt-history').on('click', function() {
// Logic to toggle threshold_timestamp between 0 or value
table.draw();
});
然后我调用DataTables
var table = $('#example').DataTable( {
ajax: "datasource.json",
stateSave : true,
stateDuration: -1,
columns: [
{ data: "type"}, //str as 'Sport','Dance'
{ data: "date"} // int as 1528572000
]
});
我设法侧身划过头,并使用localstorage“保存日期搜索”,但这是一个黑客攻击。在页面加载时,我触发按钮单击以执行搜索,因此最初表格似乎为空,出现“表格中没有数据”消息,然后显示过滤结果。作为第二个黑客,我将压制该消息,所以当真的没有数据时...将没有消息:(