使用过滤器在数据表中过滤特定月份

时间:2019-06-23 00:11:37

标签: javascript jquery datatables

我在过滤数据表(通过输入元素输入)中的特定月份时遇到麻烦。

这是我的代码:

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()”不是一个函数。而且我不确定筛选器代码是否正确。

代码基于this

您知道问题出在哪里吗?

0 个答案:

没有答案