Javascript 带有datatable的daterangepicker-无法搜索未来日期

Javascript 带有datatable的daterangepicker-无法搜索未来日期,javascript,jquery,datatable,daterangepicker,Javascript,Jquery,Datatable,Daterangepicker,我正在努力将datable和daterangepicker连接在一起,但这并不容易 我终于到了这一点,我几乎为我所做的感到高兴 不幸的是,我还有一个问题: 我有两列可以搜索日期。 在第1栏的第一栏,我正在搜索过去的日期 在第二栏第6栏,我正在搜索未来的日期 但是第二个不起作用!它无法搜索未来的日期 以下是我的JS代码: $(document).ready(function() { //DATATABLE //To display datatable without search and page

我正在努力将datable和daterangepicker连接在一起,但这并不容易

我终于到了这一点,我几乎为我所做的感到高兴

不幸的是,我还有一个问题:

我有两列可以搜索日期。 在第1栏的第一栏,我正在搜索过去的日期 在第二栏第6栏,我正在搜索未来的日期

但是第二个不起作用!它无法搜索未来的日期

以下是我的JS代码:

$(document).ready(function() {
//DATATABLE
//To display datatable without search and page length select, and to still have pagination work, instantiate like so
var oTable=$('#table_id').dataTable({

    "sDom":"tp",
    "pageLength": 10,
    "pagination":true,
        // Date Sorting
    columnDefs: [
       { type: 'date-eu', targets: ([1,6])}
     ],
     //// order table onload
"order": [[ 1, 'desc' ]],
    });
//DATE RANGE
//set global vars that are set by daterange picker, to be used by datatable
var startdate;
var enddate;
//instantiate datepicker and choose your format of the dates
$('#reportrange').daterangepicker({
        ranges: {
           "Today": [moment(), moment()],
           'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
           '7 last days': [moment().subtract(6, 'days'), moment()],
           '30 last 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')]
        }
,
    "opens": "right",
    format: 'DD/MM/YYYY'

},
function(start, end,label) {
// Parse it to a moment
var s = moment(start.toISOString());
var e = moment(end.toISOString());
startdate = s.format("YYYY-MM-DD");
enddate = e.format("YYYY-MM-DD");
});

//Filter the datatable on the datepicker apply event with reportage 1
$('#reportrange').on('apply.daterangepicker', function(ev, picker) {
startdate=picker.startDate.format('YYYY-MM-DD');
enddate=picker.endDate.format('YYYY-MM-DD');
$.fn.dataTableExt.afnFiltering.push(
function( oSettings, aData, iDataIndex ) {
if(startdate!=undefined){
// 1 here is the column where my dates are.
//Convert to YYYY-MM-DD format from DD/MM/YYYY
var coldate = aData[1].split("/");
var d = new Date(coldate[2], coldate[1]-1 , coldate[0]);
var date = moment(d.toISOString());
date =    date.format("YYYY-MM-DD");

//Remove hyphens from dates
dateMin=startdate.replace(/-/g, "");
dateMax=enddate.replace(/-/g, "");
date=date.replace(/-/g, "");

//console.log(dateMin, dateMax, date);

// run through cases to filter results
if ( dateMin == "" && date <= dateMax){
return true;
}
else if ( dateMin =="" && date <= dateMax ){
return true;
}
else if ( dateMin <= date && "" == dateMax ){
return true;
}
else if ( dateMin <= date && date <= dateMax ){
return true;
}

// all failed
return false;
}
}
);
oTable.fnDraw();
});

$('#reportrange2').daterangepicker({
        ranges: {
           "Today": [moment(), moment()],
           'Tomorrow': [moment().add(1, 'days'), moment().subtract(1, 'days')],
           '7 next days': [moment().add(6, 'days'), moment()],
           'Next 30 days': [moment().add(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')]
        }
,
    "opens": "right",
    format: 'DD/MM/YYYY'

},
function(start, end,label) {
// Parse it to a moment
var s = moment(start.toISOString());
var e = moment(end.toISOString());
startdate = s.format("YYYY-MM-DD");
enddate = e.format("YYYY-MM-DD");
});

//Filter the datatable on the datepicker apply event with reportage 1
$('#reportrange2').on('apply.daterangepicker', function(ev, picker) {
startdate=picker.startDate.format('YYYY-MM-DD');
enddate=picker.endDate.format('YYYY-MM-DD');
$.fn.dataTableExt.afnFiltering.push(
function( oSettings, aData, iDataIndex ) {
if(startdate!=undefined){
// 1 here is the column where my dates are.
//Convert to YYYY-MM-DD format from DD/MM/YYYY
var coldate = aData[6].split("/");
var d = new Date(coldate[2], coldate[1]-1 , coldate[0]);
var date = moment(d.toISOString());
date =    date.format("YYYY-MM-DD");

//Remove hyphens from dates
dateMin=startdate.replace(/-/g, "");
dateMax=enddate.replace(/-/g, "");
date=date.replace(/-/g, "");

//console.log(dateMin, dateMax, date);

// run through cases to filter results
if ( dateMin == "" && date <= dateMax){
return true;
}
else if ( dateMin =="" && date <= dateMax ){
return true;
}
else if ( dateMin <= date && "" == dateMax ){
return true;
}
else if ( dateMin <= date && date <= dateMax ){
return true;
}

// all failed
return false;
}
}
);
oTable.fnDraw();
});

       // Setup - add a text input to Consultant/Client/candidate Header cell
    $('#table_id .filters .FilterinputSearch').each( function () {
        var title = $('#table_id thead .FilterinputSearch').eq( $(this).index() ).text();
        $(this).html( '<input type="text" placeholder="recherche '+title+'" />' );
    } );

    // DataTable
    var table = $('#table_id').DataTable();

    // Apply the search
    table.columns([3,4,5]).eq( 0 ).each( function ( colIdx ) {
        $( 'input', $('.filters th')[colIdx] ).on( 'keyup change', function () {
            table
                .column( colIdx )
                .search( this.value )
                .draw();
        } );



    } );


} );
这是我的JSFIDLE:


也许是我看不见的,因为我是一个真正的JS Noob!:D

我刚玩了你的小提琴,我想你的错误在这里,所以我改为:

'Tomorrow': [moment().add(1, 'days'), moment().add(1, 'days')],
当然,将一张记录的日期改为明天:

<tr>
<td>Approved</td>
<td>09/12/2015</td>
<td title="Prolongation simple">prlg. nv. ctr.</td>
<td>Donnée 2</td>
<td>Donnée 2</td>
<td>Donnée 2</td>
<td>09/12/2015</td>
</tr>

这对我很有用。顺便说一句,你把这一切都安排好了。DataTable并不容易实现。

您好,非常感谢您的回答!很抱歉耽搁了,但我现在有另一个问题。似乎不可能在混合两个日期的搜索中进行搜索。我以编辑我的JSFIDLE为例。如果您在上个月搜索一个创建日期,然后在下个月搜索“完成日期”,它似乎不起作用。。。看到我的新问题了吗