2016-12-06 1 views
0

J'utilise Datatables et souhaite ajouter des fonctionnalités de filtrage de date supplémentaires, j'ai regardé autour d'un exemple sur google et essayé de nombreux exemples différents, mais aucun d'entre eux ne fonctionne, je vérifie la console du navigateur affiche l'erreur ReferenceError: oTable is not defined.Datasables filtrage de la plage de dates - ReferenceError: table n'est pas défini

Quelqu'un peut m'aider s'il vous plaît à chercher ce qui ne va pas avec les scripts ci-dessous?

CODE:

date start: <input name="min" id="min" type="text"> 
date end: <input name="max" id="max" type="text"> 


$.fn.dataTableExt.afnFiltering.push(
    function(oSettings, aData, iDataIndex) { 

     var today = new Date(); 
     var dd = today.getDate(); 
     var mm = today.getMonth() + 1; 
     var yyyy = today.getFullYear(); 

     if (dd<10) 
     dd = '0'+dd; 

     if (mm<10) 
     mm = '0'+mm; 

     today = dd+'/'+mm+'/'+yyyy; 

     if ($('#min').val() != '' || $('#max').val() != '') { 
     var iMin_temp = $('#min').val(); 
     if (iMin_temp == '') { 
      iMin_temp = '01/01/1980'; 
     } 

     var iMax_temp = $('#max').val(); 
     if (iMax_temp == '') { 
      iMax_temp = today; 
     } 

     var arr_min = iMin_temp.split("/"); 
     var arr_max = iMax_temp.split("/"); 
     var arr_date = aData[2].split("/"); 

     var iMin = new Date(arr_min[2], arr_min[0], arr_min[1], 0, 0, 0, 0) 
     var iMax = new Date(arr_max[2], arr_max[0], arr_max[1], 0, 0, 0, 0) 
     var iDate = new Date(arr_date[2], arr_date[0], arr_date[1], 0, 0, 0, 0) 

     if (iMin == "" && iMax == "") 
     { 
      return true; 
     } 
     else if (iMin == "" && iDate < iMax) 
     { 
      return true; 
     } 
     else if (iMin <= iDate && "" == iMax) 
     { 
      return true; 
     } 
     else if (iMin <= iDate && iDate <= iMax) 
     { 
      return true; 
     } 
     return false; 
     } 
    } 
); 


$(document).ready(function(){ 

    var handleDataTableButtons = function(){ 

     if($('#datatable').length){ 
      var oTable = $('#datatable').dataTable({ 
       dom: 'Bfrtp', 
       buttons: [ 
        { 
        extend: "excel", 
        className: "btn-sm" 
        }, 
        { 
        extend: "print", 
        className: "btn-sm" 
        }, 
       ], 
       bLengthChange: false, 
       bJQueryUI: true, 
       responsive: false, 
       stateSave: true 
      }); 

     } 
    }; 

    TableManageButtons = function(){ 
     "use strict"; 
     return{ 
      init: function(){ 
       handleDataTableButtons(); 
      } 
     }; 
    }(); 

    TableManageButtons.init(); 

    $('#min, #max').keyup(function() { oTable.draw(); }); 
    $('#min, #max').change(function() { oTable.draw(); }); 

    $('#min, #max').datepicker({ 
     showOn: 'button', 
     dateFormat: 'dd/mm/yy', 
     buttonImage: 'images/calendar.png', 
     buttonImageOnly: false 
    }); 

}); 

Répondre

0

Vous avez défini oTable l'intérieur if état donc il est accessible à l'intérieur if bloc. Définir l'extérieur if comme celui-ci

var oTable; 
$(document).ready(function(){ 

var handleDataTableButtons = function(){ 

    if($('#datatable').length){ 
     oTable = $('#datatable').dataTable({ 
      dom: 'Bfrtp', 
      buttons: [ 
       { 
       extend: "excel", 
       className: "btn-sm" 
       }, 
       { 
       extend: "print", 
       className: "btn-sm" 
       }, 
      ], 
      bLengthChange: false, 
      bJQueryUI: true, 
      responsive: false, 
      stateSave: true 
     }); 

    } 
}; 

TableManageButtons = function(){ 
    "use strict"; 
    return{ 
     init: function(){ 
      handleDataTableButtons(); 
     } 
    }; 
}(); 

TableManageButtons.init(); 

$('#min, #max').keyup(function() { oTable.draw(); }); 
$('#min, #max').change(function() { oTable.draw(); }); 

$('#min, #max').datepicker({ 
    showOn: 'button', 
    dateFormat: 'dd/mm/yy', 
    buttonImage: 'images/calendar.png', 
    buttonImageOnly: false 
}); 
}); 
+0

maintenant avec le numéro: 'TypeError: oTable.draw n'est pas un function' – kefoseki

+0

sur lequel vous avez trouvé cette ligne? – Mairaj

+0

@kefoseki désolé le déclarer avant 'document.ready' maintenant édité ma réponse. – Mairaj