如何解决数据表来自/到过滤器的日期
我想从/到一个日期列过滤器,但是几次尝试都行不通。 HTML代码:
<p id="date_filter">
<span id="date-label-from" class="date-label">From: </span>
<input class="date_range_filter date" type="text" id="startdate" />
<span id="date-label-to" class="date-label">To:</span>
<input class="date_range_filter date" type="text" id="enddate" />
</p>
<table id="data-table" class="table table-striped table-bordered" style="width:100%">
<thead>
<tr id="filter"></tr>
<tr>
<th>Transaction ID</th>
<th>Merchant Transaction ID</th>
<th>Paysystem</th>
<th>Status</th>
<th>Response</th>
<th>Date</th>
<th>Amount</th>
<th>Currency</th>
<th>User</th>
</tr>
</thead>
Datatables js代码:
$(document).ready(function() {
$('#data-table').dataTable( {
"processing": true,"serverSide": true,"ajax": "/data","order": [[ 0,"desc" ]],dom: 'Bfrtip',buttons: [
'copy','csv','excel','pdf','print'
],"lengthMenu": [[10,25,50,-1],[10,"All"]],"footerCallback": function ( row,data,start,end,display ) {
var api = this.api(),data;
// Remove the formatting to get integer data for summation
var intVal = function ( i ) {
return typeof i === 'string' ?
i.replace(/[\$,]/g,'')*1 :
typeof i === 'number' ?
i : 0;
};
// Total over all pages
total = api
.column( 6 )
.data()
.reduce( function (a,b) {
return intVal(a) + intVal(b);
},0 );
// Total over this page
pageTotal = api
.column( 6,{ page: 'current'} )
.data()
.reduce( function (a,0 );
// Update footer
$( 'th#sum_total' ).html(
pageTotal.toFixed(2)
);
},initComplete: function () {
this.api().columns().every( function () {
var column = this;
var select = $('<select><option value="">select filter</option></select>')
.appendTo( $(column.header()) )
.on( 'change',function () {
var val = $.fn.dataTable.util.escapeRegex(
$(this).val()
);
column.search( this.value ).draw();
} );
column.data().unique().sort().each( function ( d,j ) {
select.append( '<option value="'+d+'">'+d+'</option>' );
} );
} );
}
} );
} );
$(document).ready(function () {
$.fn.dataTable.ext.search.push(
function (settings,dataIndex) {
var min = $('#startdate').datepicker('getDate');
var max = $('#enddate').datepicker('getDate');
var startDate = new Date(data[5]);
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;
}
);
$('#startdate').datepicker({ onSelect: function () { table.draw(); },changeMonth: true,changeYear: true,dateFormat:"dd/mm/yy" });
$('#enddate').datepicker({ onSelect: function () { table.draw(); },dateFormat:"dd/mm/yy" });
var table = $('#data-table').DataTable();
// Event listener to the two range filtering inputs to redraw on input
$('#startdate,#enddate').change(function () {
table.draw();
});
});
应通过datepicker(引导程序),onchange列过滤器使用过滤器。 数据库中的日期格式为datetime。数据在服务器端处理。常规列搜索过滤按预期工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。