2016-12-10 2 views
0

J'ai une table avec deux colonnes de date que je peux utiliser la plage de dates dans une colonne qui est aData [3] comme celui-cidatatables deux plages de dates de filtrage en deux colonnes

$.fn.dataTableExt.afnFiltering.push(
    function(oSettings, aData, iDataIndex){ 
     var dateStart = parseDateValue($("#fromDate").val()); 
     var dateEnd = parseDateValue($("#toDate").val()); 
     var evalDate= parseDateValue(aData[3]); 
     if (evalDate >= dateStart && evalDate <= dateEnd) { 
      return true; 
     } 
     else { 
       return false; 
     } 

}); 

function parseDateValue(rawDate) { 
    var dateArray= rawDate.split("-"); 
    var parsedDate= dateArray[2] + dateArray[1] + dateArray[0]; 
    return parsedDate; 
} 

var table = $('#data').DataTable({ 
    "lengthMenu": [[25, 50, -1], [25, 50, "All"]], 
    "order": [[ 0, "desc" ]], 
    "paging" : true, 
    "scrollX": true, 
    dom: 'Bfrtip', 
    buttons: [ 
    'excel', 'print' 
    ] 
}); 

$("#fromDate").keyup (function() { table.draw(); }); 
$("#fromDate").change(function() { table.draw(); }); 
$("#toDate").keyup (function() { table.draw(); }); 
$("#toDate").change(function() { table.draw(); }); 

Maintenant, je veux ajouter une autre colonne de date qui sera aData [5] et je veux y ajouter un autre filtre de plage de dates. Comment puis-je filtrer la table avec deux filtres de plage de données en utilisant d'autres sélecteurs de dates # fromDate2 et # toDate2 pour rechercher dans aData [5]?

+0

Je l'ai fait quelque chose comme ça avant, mais je serais toujours aussi beaucoup plus heureux de travailler contre un jsFiddle afin que je puisse vérifier la Les données. – annoyingmouse

Répondre

0

J'ai créé boutons radio pour choisir la colonne pour filtrer

<td><input type="radio" name="filterdate" value="birth_date"> birth date </td> 
<td><input type="radio" name="filterdate" value="register_date"> register date </td> 

$("input[name=filterdate]").change(function() { 
    var d = $("input[name=filterdate]:checked").val(); 

    if(d == 'birth_date'){ 
     $.fn.dataTableExt.afnFiltering.push(
      function(oSettings, aData, iDataIndex){ 
       var dateStart = parseDateValue($("#Bdate_From").val()); 
       var dateEnd = parseDateValue($("#Bdate_To").val()); 
       var evalDate= parseDateValue(aData[3]); 
       if (evalDate >= dateStart && evalDate <= dateEnd) { 
        return true; 
       } 
       else { 
        return false; 
       } 
      } 
     ); 
    } 
    else{ 
     $.fn.dataTableExt.afnFiltering.push(
      function(oSettings, aData, iDataIndex){ 
       var dateStart = parseDateValue($("#regdate_From").val()); 
       var dateEnd = parseDateValue($("#regdate_To").val()); 
       var evalDate= parseDateValue(aData[8]); 
       if (evalDate >= dateStart && evalDate <= dateEnd) { 
        return true; 
       } 
       else { 
        return false; 
       } 
      } 
     ); 
    } 
}); 

function parseDateValue(rawDate) { 
    var dateArray= rawDate.split("-"); 
    var parsedDate= dateArray[2] + dateArray[1] + dateArray[0]; 
    return parsedDate; 
} 

var table = $('#data').DataTable({ 
    "lengthMenu": [[25, 50, -1], [25, 50, "All"]], 
    "order": [[ 0, "desc" ]], 
    "paging" : true, 
    "scrollX": true, 
    dom: 'Bfrtip', 
    buttons: [ 
     'excel', 'print' 
    ], 
    responsive: true 
});