2016-02-29 2 views
1

Я использую jQuery Datatable v1.9.4, я хочу выполнить обычай или позволить сканировать диапазон поиска по datatable, вот скриншот моего datatable.Datatable fnFilter с специальными критериями поиска

This is screen cap of my datatable.

здесь, во втором раскрывающемся списке, есть целый ряд дней, я хочу, чтобы отфильтровать столбец period основываясь на этом, 2-й ниспадающее меню. например, если period имеет текст 01/02/2016 - 29/03/2016, и я использую фильтр сегодня на 29/01/2016 и выбираю второй вариант из раскрывающегося списка, 7 days ago, тогда строка будет отфильтрована.

Я использую этот код,

jQuery('#period').change(function() { 
    selectedValue = jQuery(this).find('option:selected').val(); 
    jQuery('#dyntable').dataTable().fnFilter(selectedValue, 4, true); 
}); 

и, конечно же, он не будет работать.
может кто-нибудь мне помочь.

спасибо.

+0

Вы можете создать jsfiddle для этого плз? – RRR

+0

Я создал скрипку на аналогичных строках. PLZ ссылайтесь на нее и измените свой код соответственно https://jsfiddle.net/e7wy1h39/ – RRR

+0

@RRR, у меня была вилка вашей скрипки, но можете ли вы поместить фильтр в диапазон дат вместо возраста? Я хочу, чтобы, например, 'Start Date' в вашей скрипке находится между некоторыми датами. –

ответ

0

ok,

У меня есть решение.

jQuery('#period').change(function() { 
    jQuery('#dyntable').dataTable().fnDraw(); 
}); 


$.fn.dataTableExt.afnFiltering.push(function (oSettings, aData, iDataIndex) { 
    data = aData[4]; 
    var selectedVal = $('#period').val(); 
    if (selectedVal != "") { 
     selectedSplit = selectedVal.split(" - "); 
     dataSplit = data.split(" - "); 

     var f = selectedSplit[0].split("/"); 
     var t = selectedSplit[1].split("/"); 
     var selectedFrom = new Date(f[2], f[1] - 1, f[0]); 
     var selectedTo = new Date(t[2], t[1] - 1, t[0]); 

     var f = dataSplit[0].split("/"); 
     var t = dataSplit[1].split("/"); 
     var tableFrom = new Date(f[2], f[1] - 1, f[0]); 
     var tableTo = new Date(t[2], t[1] - 1, t[0]); 

     if (tableFrom.getTime() >= selectedFrom.getTime() && tableTo.getTime() <= selectedTo.getTime()) { 
      return true; 
     } 
     return false; 
    } 
    return true; 
}); 
+0

Не документированный способ $ .fn.dataTable.search.push (...)? Глядя сюда: https://datatables.net/examples/plug-ins/range_filtering.html –

Смежные вопросы