数据表 - 日期范围过滤器问题

时间:2016-04-21 00:49:18

标签: jquery datatables momentjs datatables-1.10

在让日期范围功能正常工作时遇到问题。我有3个部分工作的日期范围过滤器。当我开始输入开始日期时,如果我将结束日期留空,则会收到错误,表示未定义结束时间。另外注意到我在2016-04-20输入作为开始日期,它显示我2016-04-17,2016-04-18和2016-04-20。

以下是一个示例:https://jsfiddle.net/bLd00Lh5/10/

这是我的剧本:

$('[id^=min_col_date]').bind('change keyup', function() {
    start_date = $(this).val();
  column_name = $(this).attr("id").slice( -9 );;
  dtTable.draw();   
}); 

$('[id^=max_col_date]').bind('change keyup', function() {
    end_date = $(this).val();
  column_name = $(this).attr("id").slice( -9 );
  dtTable.draw();   
}); 

$.fn.dataTableExt.afnFiltering.push(
function( oSettings, aData, iDataIndex ) {

    var filterstart = start_date;
    var filterend = end_date;
    var iStartDateCol = "."+column_name;
    var iEndDateCol = "."+column_name;
    var tabledatestart = aData[iStartDateCol];
    var tabledateend= aData[iEndDateCol];

    if ( filterstart === "" && filterend === "" )
    {
        return true;
    }
    else if ((moment(filterstart).isSame(tabledatestart) || moment(filterstart).isBefore(tabledatestart)) && filterend === "")
    {
        return true;
    }
    else if ((moment(filterstart).isSame(tabledatestart) || moment(filterstart).isAfter(tabledatestart)) && filterstart === "")
    {
        return true;
    }
    else if ((moment(filterstart).isSame(tabledatestart) || moment(filterstart).isBefore(tabledatestart)) && (moment(filterend).isSame(tabledateend) || moment(filterend).isAfter(tabledateend)))
    {
        return true;
    }
    return false;
}
);

有人会知道为什么会这样吗?

0 个答案:

没有答案