2017-01-16 3 views
0

Я пытаюсь добавить простое раскрывающееся меню («30 дней», «60 дней», «90 дней», «1 год», «Все даты») в таблицу DataTables который будет фильтровать таблицу по значению в столбце Date.Добавление фильтрации по диапазону дат с помощью DataTables

Я посмотрел на this ответ и понял, как фильтровать по диапазону min и max, введенному в текстовые поля, но не могу понять, как переносить это в хороший фильтр выпадающего списка.

+0

Не могли бы вы предоставить JSFiddle с некоторыми примерами данных, чтобы мы могли экспериментировать? – annoyingmouse

ответ

1

Это должно делать то, что вам требуется, но потребуется некоторая конфигурация:

$.fn.dataTableExt.afnFiltering.push(
    function(oSettings, aData, iDataIndex) { 
    if (typeof $('#duration').val() !== "undefined") { 
     var duration = $('#duration').val(); 
     var durationBits = duration.split(" "); 
     var durationInt = ~~durationBits[0]; 
     var durationString = durationBits[1]; 
     var now = moment("2013/08/11", "YYYY/MM/DD"); 
     var targetDate = now.subtract(durationInt, durationString); 
     var iDateCol = 4; 
     var colDate = aData[iDateCol]; 
     if (duration === "All") { 
     return true; 
     } else { 
     return moment(colDate, "YYYY/MM/DD").isSameOrAfter(targetDate); 
     } 
    } else { 
     return true; 
    } 
    } 
); 

Вам также необходимо momentjs быть доступны. У меня есть надуманный рабочий пример here. Мы в основном принимаем дату и используем moment, чтобы проверить, совпадает ли дата в столбце или после даты с соответствующим вычитанием. Затем мы перерисовываем таблицу при изменении значения выбора. Надеюсь, это поможет.