Javascript 数据表上的日期范围和年龄范围筛选器

Javascript 数据表上的日期范围和年龄范围筛选器,javascript,jquery,datatables,Javascript,Jquery,Datatables,我正在尝试为datatable实现Daterange和age range筛选器 我已经成功地实现了年龄过滤器。 这是小提琴: 这里是jquery $.fn.dataTable.ext.search.push(function (settings, data, dataIndex) { if ($('#range').val().indexOf("+")>=0){ var number=$('#range').val().slice(0,-1);

我正在尝试为datatable实现Daterange和age range筛选器

我已经成功地实现了年龄过滤器。 这是小提琴:

这里是jquery

$.fn.dataTable.ext.search.push(function (settings, data, dataIndex) {
        if ($('#range').val().indexOf("+")>=0){
            var number=$('#range').val().slice(0,-1);
            //alert(number);
            return parseInt(data[1]) > parseInt(number || data[1]);
        }else if ($('#range').val().indexOf("-")>=0){
            var number=$('#range').val().split("-");
            //alert(number[0]);
            //alert(number[1]);
            return parseInt(data[1]) >= parseInt(number[0] || data[1])
                    && parseInt(data[1]) <= parseInt(number[1] || data[1]);
        }
    });
    $('#range').on('change',table.draw);
$.fn.dataTable.ext.search.push(功能(设置、数据、数据索引){
if($('#range').val().indexOf(“+”>)=0){
var number=$('#range').val().slice(0,-1);
//警报(编号);
返回parseInt(数据[1])>parseInt(数字| |数据[1]);
}else if($('#range').val().indexOf(“-”>)=0){
var number=$('#range').val().split(“-”);
//警报(编号[0]);
//警报(编号[1]);
返回parseInt(数据[1])>=parseInt(数字[0]| |数据[1])
&&parseInt(数据[1])=0{
var number=$('#range').val().slice(0,-1);
//警报(编号);
返回parseInt(数据[3])>parseInt(数字| |数据[3]);
}else if($('#range').val().indexOf(“-”>)=0){
var number=$('#range').val().split(“-”);
//警报(编号[0]);
//警报(编号[1]);
返回parseInt(数据[3])>=parseInt(数字[0]| |数据[3])

&&parseInt(数据[3])我会在搜索扩展中应用这两个条件:

$.fn.dataTable.ext.search.push(function(settings, data, dataIndex) {

  var fromAge, toAge, inEmpAgeRange, inEmpStartingDateRange;

  var empAge = parseInt(data[3]);
  var empStartDate = Date.parse(data[4]);

  if ($('#range').val().indexOf("+") >= 0) {
    fromAge = parseInt($('#range').val().slice(0, -1));
    toAge = null;
  } else if ($('#range').val().indexOf("-") >= 0) {
    var ageRange = $('#range').val().split("-");
    fromAge = parseInt(ageRange[0]);
    toAge = parseInt(ageRange[1]);
  }

  inEmpAgeRange = (empAge >= fromAge || empAge) &&
    toAge !== null ? (empAge <= (toAge || empAge)) : true;

  inEmpStartingDateRange = (dateRangeStart && dateRangeEnd) ?
    (moment(empStartDate).isSameOrAfter(dateRangeStart) &&
     moment(empStartDate).isSameOrBefore(dateRangeEnd)) : true;

  return inEmpAgeRange && inEmpStartingDateRange;
});
更新的演示:

更改

var iStartDateCol = 5; //using column 2 in this instance
var iEndDateCol = 5;


您的日期在《救生衣解决方案》的第四列
$("#date_range").on('apply.daterangepicker', function(ev, picker) {
  dateRangeStart = picker.startDate;
  dateRangeEnd = picker.endDate;
  $(this).val(dateRangeStart.format('YYYY-MM-DD') + ' to ' + dateRangeEnd.format('YYYY-MM-DD'));
  table.draw();
});

$("#date_range").on('cancel.daterangepicker', function(ev, picker) {
  dateRangeStart = dateRangeEnd = null;
  $(this).val('');
  table.draw();
});
var iStartDateCol = 5; //using column 2 in this instance
var iEndDateCol = 5;
var iStartDateCol = 4; //using column 2 in this instance
var iEndDateCol = 4