Javascript 如何使用dataTable筛选日期列
我不熟悉这个dataTable的概念,我在我的文件中使用了相同的代码,请检查一下这个链接,在这里我有三个文件,像server.php、ssp.class.php和page.php(在server.php文件中有与数据库相关的代码,在ssp.class.php中有与过滤器相关的数据,然后在page.php中有前端代码)。 在server.php文件中,我的代码如下所示:Javascript 如何使用dataTable筛选日期列,javascript,php,jquery,datatables,Javascript,Php,Jquery,Datatables,我不熟悉这个dataTable的概念,我在我的文件中使用了相同的代码,请检查一下这个链接,在这里我有三个文件,像server.php、ssp.class.php和page.php(在server.php文件中有与数据库相关的代码,在ssp.class.php中有与过滤器相关的数据,然后在page.php中有前端代码)。 在server.php文件中,我的代码如下所示: $filename = 'filterdate.php'; $columns = array( array( 'db'
$filename = 'filterdate.php';
$columns = array(
array( 'db' => 'filename', 'dt' => 0 ),
array( 'db' => 'date', 'dt' => 1 ),
array( 'db' => 'time', 'dt' => 2 ),
array( 'db' => 'source', 'dt' => 3 ),
array( 'db' => 'destination', 'dt' => 4 ),
array( 'db' => 'duration', 'dt' => 5 ),
array( 'db' => 'filename', 'dt' => 6 )
);
这里我的查询是用datepicker从两个名为start_date和end_date的输入字段中筛选日期列
我正在尝试以下代码:
$(document).ready(function() {
var oTable = $('#example').DataTable({
"oLanguage": {
"sSearch": "Filter Data"
},
"iDisplayLength": -1,
"sPaginationType": "full_numbers",
});
$("#datepicker_from").datepicker({
dateFormat: 'yy-mm-dd',
showOn: "button",
buttonImage: "assets/images/cal.gif",
buttonImageOnly: false,
"onSelect": function(date) {
minDateFilter = new Date(date).getTime();
oTable.draw();
}
}).keyup(function() {
minDateFilter = new Date(this.value).getTime();
oTable.draw();
//alert(minDateFilter);
});
$("#datepicker_to").datepicker({
dateFormat: 'yy-mm-dd',
showOn: "button",
buttonImage: "assets/images/cal.gif",
buttonImageOnly: false,
"onSelect": function(date) {
maxDateFilter = new Date(date).getTime();
oTable.draw();
}
}).keyup(function() {
maxDateFilter = new Date(this.value).getTime();
oTable.draw();
//alert(maxDateFilter);
});
//});
} );
// Date range filter
minDateFilter = "";
maxDateFilter = "";
$.fn.dataTableExt.afnFiltering.push(
function(oSettings, aData, iDataIndex) {
alert("inside table");
if (typeof aData._date == 'undefined') {
aData._date = new Date(aData[1]).getTime();
}
if (minDateFilter && !isNaN(minDateFilter)) {
if (aData._date < minDateFilter) {
return false;
}
}
if (maxDateFilter && !isNaN(maxDateFilter)) {
if (aData._date > maxDateFilter) {
return false;
}
}
return true;
}
);
$(文档).ready(函数(){
var oTable=$(“#示例”).DataTable({
“语言”:{
“sSearch”:“筛选数据”
},
“iDisplayLength”:-1,
“sPaginationType”:“完整编号”,
});
$(“#日期选择器_from”)。日期选择器({
日期格式:'年-月-日',
展示:“按钮”,
buttonImage:“资产/图像/cal.gif”,
buttonImageOnly:false,
“onSelect”:功能(日期){
minDateFilter=新日期(Date).getTime();
rotable.draw();
}
}).keyup(函数(){
minDateFilter=新日期(this.value).getTime();
rotable.draw();
//警报(minDateFilter);
});
$(“#日期选择器_to”)。日期选择器({
日期格式:'年-月-日',
展示:“按钮”,
buttonImage:“资产/图像/cal.gif”,
buttonImageOnly:false,
“onSelect”:功能(日期){
maxDateFilter=新日期(Date).getTime();
rotable.draw();
}
}).keyup(函数(){
maxDateFilter=新日期(this.value).getTime();
rotable.draw();
//警报(maxDateFilter);
});
//});
} );
//日期范围过滤器
minDateFilter=“”;
maxDateFilter=“”;
$.fn.dataTableExt.afnFiltering.push(
功能(oSettings、aData、iDataIndex){
警报(“内表”);
如果(数据类型.\u日期=='未定义'){
aData._date=新日期(aData[1]).getTime();
}
if(minDateFilter&!isNaN(minDateFilter)){
if(数据日期maxDateFilter){
返回false;
}
}
返回true;
}
);
在这段代码中,我没有得到filter、maxDateFilter和minDateFilter发出警报,而是在
$.fn.dataTableExt.afnFiltering.push(函数(oSettings、aData、iDataIndex){
函数中,我没有得到警报框。看看JS小提琴:
针对基于JAVASCRIPT的datatables添加的日期筛选器。已将HTML5输入类型日期元素用于datepicker。在筛选数据时,已将输入日期转换为unix时间戳,然后匹配表中的数据
JS代码:
function toTimestamp(inputDateTime) {
if( inputDateTime == null || typeof inputDateTime == 'undefined' ) {
inputDateTime = new Date();
}
return Math.round(new Date(inputDateTime).getTime()/1000);
}
$.fn.dataTable.ext.search.push(
function( settings, data, dataIndex ) {
var min = parseInt( $('#min').val(), 10 );
var max = parseInt( $('#max').val(), 10 );
var age = parseFloat( data[3] ) || 0; // use data for the age column
var from_date = toTimestamp($('#from_date').val());
var to_date = toTimestamp($('#to_date').val());
var start_date = toTimestamp(data[4]);
var record_found = false;
if ( ( isNaN( min ) && isNaN( max ) ) ||
( isNaN( min ) && age <= max ) ||
( min <= age && isNaN( max ) ) ||
( min <= age && age <= max ) )
{
record_found = true;
}
if( record_found &&
( ( isNaN( from_date ) && isNaN( to_date ) ) ||
( isNaN( from_date ) && from_date <= to_date ) ||
( from_date <= start_date && isNaN( to_date ) ) ||
( from_date <= start_date && start_date <= to_date ) ) )
{
record_found = true;
}
else
{
record_found = false;
}
return record_found;
}
);
$(document).ready(function() {
var table = $('#example').DataTable();
// Event listener to the two range filtering inputs to redraw on input
$('#min, #max').keyup( function() {
table.draw();
} );
// Event listener to the two date filtering inputs to redraw on input
$('#from_date, #to_date').keyup( function() {
table.draw();
} );
} );
函数到时间戳(inputDateTime){
如果(inputDateTime==null | | inputDateTime的类型=='undefined'){
inputDateTime=新日期();
}
返回Math.round(新日期(inputDateTime).getTime()/1000);
}
$.fn.dataTable.ext.search.push(
功能(设置、数据、数据索引){
var min=parseInt($('#min').val(),10);
var max=parseInt($('#max').val(),10);
var age=parseFloat(数据[3])| | 0;//将数据用于age列
var from_date=toTimestamp($(“#from_date”).val();
var to_date=toTimestamp($(“#to_date”).val();
var开始日期=toTimestamp(数据[4]);
var记录_found=假;
如果((isNaN(最小值)和&isNaN(最大值))||
(伊斯南(分钟)&&age控制台日志中是否存在任何错误?您是否使用url中存在的单个列筛选:。如果是,则将单个值发送到服务器端。如果您希望发送任何额外参数,请查看“您可以使用插件轻松完成”查看这里的讨论和这里的js实时示例谢谢@SimoneRossaini一个错误是comimg likeUncaught SyntaxError:意外标记'。
我想这是datepicker css
谢谢@PrasadWargad这样我需要的,而不是年龄我想要筛选日期列,请检查一下。