2016-05-23 3 views
0

У меня есть Datatbles таблица, которая выглядит следующим образом: enter image description hereDataTables Столбцы поиск: ложь также отключает Date-Range Поиск

Обычай jQueryUI Из-To DatePicker используется для работы, прежде чем я должен был сделать столбец DateTime " доступный для поиска: false ". Я сделал это, потому что я не хочу, чтобы результаты «Дата-время» включались в фильтр поля поиска.

$(document).ready(function() { 
var table = $('#myTable').DataTable({  
...,   
    columnDefs: [ 
      //column 6 set to "not searchable"" 
      { "searchable": false, targets: [6] } 
     ] 
.... 
     $('#from').change(function() { 
     table.draw(); }); 
     $('#to').change(function() { 
     table.draw(); }); 
}); 

Это из-Для реализации диапазона Дата:

//Date Range Picker 
$(function() { 
$("#from").datepicker({ 
    onClose: function(selectedDate) { 
    $("#to").datepicker("option", "minDate", selectedDate); 
    } 
}); 
$("#to").datepicker({ 
    onClose: function(selectedDate) { 
    $("#from").datepicker("option", "maxDate", selectedDate); 
    } 
}); 
}); 

$.fn.dataTableExt.afnFiltering.push(
    function(oSettings, aData, iDataIndex) { 
     var iFini = document.getElementById('from').value; 
     var iFfin = document.getElementById('to').value; 
     var iStartDateCol = 6; 
     var iEndDateCol = 6;   
); 

Любой человек может понять, что делать, чтобы иметь как От - К и Поиск работы?

ответ

1

Единственное решение, которое я смог найти, - это переписать метод поиска. Это позволит осуществлять поиск только для столбцов 0-5, а входы From-To все еще могут использовать столбец 6 для диапазона дат.

$('.dataTables_filter input').unbind().on('keyup', function() { 
    var searchTerm = this.value.toLowerCase(); 
    $.fn.dataTable.ext.search.push(function(settings, data, dataIndex) 
     { 
      if (~data[0].toLowerCase().indexOf(searchTerm)) return true; 
      if (~data[1].toLowerCase().indexOf(searchTerm)) return true; 
      if (~data[2].toLowerCase().indexOf(searchTerm)) return true; 
      if (~data[3].toLowerCase().indexOf(searchTerm)) return true; 
      if (~data[4].toLowerCase().indexOf(searchTerm)) return true; 
      if (~data[5].toLowerCase().indexOf(searchTerm)) return true; 
      return false; 
     }) 
    table.draw(); 
    $.fn.dataTable.ext.search.pop(); 
}) 
+0

Я думаю, что это лучшее решение, которое вы можете придумать. Логично, что 'searchable: false' отключает общую фильтрацию, также когда фильтрация выполняется кодом, поэтому мы также должны изменить метод фильтра по умолчанию. – davidkonrad

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