我在按日期范围搜索时遇到问题。 我也有日期时间,所以如果我搜索范围,那么它找不到它。 但如果我去掉时间。它可以工作并且可以找到日期范围。
我也尝试了 colspan="2"但它给出了错误:
Cannot set property '_DT_CellIndex' of undefined
我的代码:
$(document).ready(function () {
$.fn.dataTable.ext.search.push(
function (settings, data, dataIndex) {
var min = $('#min').datepicker("getDate");
var max = $('#max').datepicker("getDate");
var d = data[4].split("/");
var startDate = new Date(d[1]+ "/" + d[0] +"/" + d[2]);
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;
}
);
$("#min").datepicker({ onSelect: function () { oTable.draw(); }, changeMonth: true, changeYear: true , dateFormat:"dd/mm/yy"});
$("#max").datepicker({ onSelect: function () { oTable.draw(); }, changeMonth: true, changeYear: true, dateFormat:"dd/mm/yy" });
var oTable = $('#sort').DataTable();
$('#min, #max').change(function () {
oTable.draw();
});
});
还尝试了此方法添加 colspan 和额外的 td 标签以获取时间: https://jsfiddle.net/yerz2dg2/
但是它给出了错误,正如我在上面提到的那样。
最佳答案
我不确定您的原始代码中发生了什么,因为 JSFiddle 没有对您正在使用的库的引用 (datepicker
)。但我稍微重写了它,它现在应该可以工作了:
$(document).ready(function() {
var oTable = $('#sort').DataTable({
initComplete: function() {
$("#min").datepicker({
onSelect: function() {
oTable.draw();
},
changeMonth: true,
changeYear: true,
dateFormat: "dd/mm/yy"
});
$("#max").datepicker({
onSelect: function() {
oTable.draw();
},
changeMonth: true,
changeYear: true,
dateFormat: "dd/mm/yy"
});
}
});
});
$.fn.dataTable.ext.search.push(
function(settings, data, dataIndex) {
var min = (moment($('#min').val(), "DD/MM/YYYY").isValid()) ? ~~moment($('#min').val(), "DD/MM/YYYY").format("X") : null;
var max = (moment($('#max').val(), "DD/MM/YYYY").isValid()) ? ~~moment($('#max').val(), "DD/MM/YYYY").format("X") : null;
var d = ~~moment(data[1], "DD/MM/YYYY").format("X");
if (min == null && max == null) {
return true;
}
if (min == null && d <= max) {
return true;
}
if (max == null && d >= min) {
return true;
}
if (d <= max && d >= min) {
return true;
}
return false;
}
);
工作中JSFiddle 。我添加了momentjs谁真的会费心去理解 JS 日期?
希望有帮助。
关于javascript - 数据表无法按日期搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41453774/