Javascript 使用日期范围筛选数据表
我想将datarange picker插件集成到datatables中,我写道:Javascript 使用日期范围筛选数据表,javascript,jquery,datatables,date-range,daterangepicker,Javascript,Jquery,Datatables,Date Range,Daterangepicker,我想将datarange picker插件集成到datatables中,我写道: $(document).ready(function() { $(function() { var start = moment("2017-01-01 12:34:16"); var end = moment("2018-03-03 10:08:07"); function cb(start, end) { $('#reportrange span').html(sta
$(document).ready(function() {
$(function() {
var start = moment("2017-01-01 12:34:16");
var end = moment("2018-03-03 10:08:07");
function cb(start, end) {
$('#reportrange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
}
$('#reportrange').daterangepicker({
startDate: start,
endDate: end,
ranges: {
'Today': [moment(), moment()],
'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
'Last 7 Days': [moment().subtract(6, 'days'), moment()],
'Last 30 Days': [moment().subtract(29, 'days'), moment()],
'This Month': [moment().startOf('month'), moment().endOf('month')],
'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
}
}, cb);
cb(start, end);
});
$('#reportrange').on('apply.daterangepicker', function(ev, picker) {
var start = picker.startDate.format('YYYY-MM-DD');
var end = picker.endDate.format('YYYY-MM-DD');
$.fn.dataTable.ext.search.push(
function(settings, data, dataIndex) {
var min = start;
var max = end;
var startDate = new Date(data[1]);
if (min == null && max == null) {
return true;
}
if (min == null && startDate <= max) {
return true;
}
if (max == null && startDate >= min) {
return true;
}
if (startDate <= max && startDate >= min) {
return true;
}
return false;
}
);
table.draw();
});
var dataSet = [
['2093',
'Feb 23, 2018',
'asd asd ',
'asd@hotmail.com',
'£ 50',
'£0.00',
"Feb 23, 2019",
],
['2092',
'Feb 23, 2018',
'asddd asddd',
'dddd@hotmail.com',
'£ 50',
'£0.00',
"Feb 23, 2019",
],
['2050',
'Feb 20, 2018',
'Angus Fret',
'angus@fgf.co.uk',
'£ 50',
'£0.00',
"Feb 20, 2019",
],
['2048',
'Feb 19, 2018',
'John Smith',
'john@smith.com',
'£ 50',
'£0.00',
"Feb 19, 2019",
],
['2046',
'Feb 19, 2018',
'Ana Ana',
'ana@talktalk.net',
'£ 50',
'£0.00',
"Feb 19, 2019",
],
['2045',
'Feb 19, 2018',
'Ray N',
'rayn@nn.com',
'£ 50',
'£0.00',
"Feb 19, 2019",
],
['2044',
'Feb 16, 2018',
'Paul N',
'paul@gmail.com',
'£ 200',
'£0.00',
"Feb 16, 2019",
],
['2042',
'Feb 13, 2018',
'Bradley New',
'new-marden@hotmail.com',
'£ 100',
'£0.00',
"Feb 13, 2019",
],
['2012',
'Jan 27, 2018',
'Mark Zuckenberg',
'markzeg@me.com',
'£ 150',
'£0.00',
"Jan 27, 2019",
],
];
var table = $('#example').DataTable({
"order": [
[0, "desc"]
],
lengthChange: false,
data: dataSet,
columns: [{
title: "ORDER ID"
},
{
title: "ORDER DATE"
},
{
title: "PURCHASED BY"
},
{
title: "RECIPIENT"
},
{
title: "ORDER TOTAL"
},
{
title: "VAT"
},
{
title: "EXPIRY"
}
]
});
});
正如你们所看到的,我使用了一个SearchDataTableAPI函数来比较日期,并获取日期之间的数据
什么是问题
当我试图用新的过滤数据绘制表格时,只有最小日期和最大日期之间的数据,我从datatable插件中得到0行。为什么?
这是小提琴:
怎么了?我也没有看到我的代码中有任何错误。。。请帮忙
我怎样才能解决我的问题?为什么表重新显示0结果?主要问题是日期比较
var start = picker.startDate.format('YYYY-MM-DD');
var end = picker.endDate.format('YYYY-MM-DD');
应该是:
var start = picker.startDate;
var end = picker.endDate;
然后,您还会遇到一个问题,即当您进行筛选时,您的数据将完全从搜索中删除,因此在绘制表后需要使用此功能
$.fn.dataTable.ext.search.pop();
谢谢你,伙计。非常感谢。。。这里是CDN库的摆弄HM,现在我检查我是否选择了一个日期作为日期范围et.c 2月20日我没有得到任何。。。为什么?日期格式是四舍五入到第二天呵呵。更新了更好的答案: