У меня проблемы с фильтрацией одного конкретного месяца в таблицах данных (вводится с помощью элемента ввода).
Вот мой код:
HTML:
<div class="form-inline container-fluid mb-2">
<label for="month_selector">month</label>
<input type="month" id="month_selector" class="form-control form-control-sm mx-sm-3">
</div>
JS:
var dataTable = '';
function initDataTable (target, options) {
let data = {
stateSave: true,
destroy: true,
}
$.extend(data, options)
dataTable = $(target)
dataTable.DataTable(data)
}
$(function () {
//some other code
initDataTable('.datatable')
})
//DATEPICKER
$('#month_selector').datepicker({
"onSelect": function (date) {
console.log(date)
minDateFilter = new Date(date.getFullYear(), date.getMonth(), 1).getTime()
maxDateFilter = new Date(date.getFullYear(), date.getMonth() + 1, 0).getTime()
dataTable.draw()
}
}).keyup(function () {
minDateFilter = new Date(this.value.getFullYear(), this.value.getMonth(), 1).getTime()
maxDateFilter = new Date(this.value.getFullYear(), this.value.getMonth() + 1, 0).getTime()
dataTable.draw()
})
// Date range filter
minDateFilter = "";
maxDateFilter = "";
$.fn.dataTableExt.afnFiltering.push(
function(oSettings, aData, iDataIndex) {
if (typeof aData._date == 'undefined') {
aData._date = new Date(aData[0]).getTime();
}
if (minDateFilter && !isNaN(minDateFilter)) {
if (aData._date < minDateFilter) {
return false;
}
}
if (maxDateFilter && !isNaN(maxDateFilter)) {
if (aData._date > maxDateFilter) {
return false;
}
}
return true;
}
)
Проблема в том, что в переменной «date» указана сегодняшняя дата, и в ней говорится, что «getFullYear ()» не является функцией. А также я не уверен, что код фильтра правильный.
Код основан на этом
Знаете ли вы, где проблема?