我有一个问题来过滤日期范围HERE是项目。过滤器工作正常,但当我尝试过滤流动日期2016年8月1日和2016年9月1日 - 过滤器返回false。
一开始我认为过滤器的条件存在问题:
$.fn.dataTable.ext.search.push(
function( settings, data, dataIndex ) {
var min = new Date($('#filter_start_date').val());
var max = new Date($('#filter_end_date').val());
var date_var = new Date(data[4]); // use data for the date column
if (
( isNaN( min ) && isNaN( max ) ) ||
( isNaN( min ) && date_var <= max ) ||
( min <= date_var && isNaN( max ) ) ||
( min <= date_var && date_var <= max )
)
{
return true;
}
return false;
}
);
但是我意识到它可能与解析日期有关...
答案 0 :(得分:0)
dateString
中的{p> new Date(dateString)
必须采用特定格式才能正常运行,例如,请参阅here了解某些指南。
让您的示例有效的快速解决方法是更改dateFormat
选项中的datepicker
:
...
dateFormat: 'yy-mm-dd',
...
如果您不喜欢显示的格式,datepicker
中的选项可以更改。
答案 1 :(得分:0)
知道了 - 我将滤镜格式更改为yy-mm-dd,如下所示:
$.fn.dataTable.ext.search.push(
function(settings, data, dataIndex) {
function reverse_date(inputDate){
var date_to_fix = inputDate.split("/");
var fixed = date_to_fix.reverse().join('-');
return fixed; // creates yy-mm-dd format
};
var min = new Date(reverse_date($('#filter_start_date').val()));
var max = new Date(reverse_date($('#filter_end_date').val()));
var date_var = new Date(reverse_date((data[4]))); // use data for the age
column
if (
(isNaN(min) && isNaN(max)) ||
(isNaN(min) && date_var <= max) ||
(min <= date_var && isNaN(max)) ||
(min <= date_var && date_var <= max)
) {
return true;
}
return false;
} );
它解决了这个问题。 Here是项目。