2017-03-17 214 views
0

數據表濾波器我有一個頁面2的DataTable兩個數據表我已經添加使用與日期範圍

function filterDateRangeService(){ 
     $.fn.dataTable.ext.search.push(

       function(settings, data, dataIndex) {     
        var dateStart = moment($("#fromDateSer").val(),"DD/MM/YYYY"); 
        var dateEnd = moment($("#toDateSer").val(),"DD/MM/YYYY"); 

        var evalDate= moment(data[5],"DD/MM/YYYY"); 
      console.log("dateStart +"+dateStart+" dateEnd "+dateEnd) 

       // console.log("insidde") 
        if (evalDate >= dateStart && evalDate <= dateEnd) { 
         return true; 
        } 
        else { 
         return false; 
        } 
        } 


      ); 

function filterDateRangePatient(){ 
      $.fn.dataTable.ext.search.push(

        function(settings, data, dataIndex) {     
         var dateStart = moment($("#fromDate").val(),"DD/MM/YYYY"); 
         var dateEnd = moment($("#toDate").val(),"DD/MM/YYYY"); 

         var evalDate= moment(data[6],"DD/MM/YYYY"); 
       console.log("dateStart +"+dateStart+" dateEnd "+dateEnd) 

        // console.log("insidde") 
         if (evalDate >= dateStart && evalDate <= dateEnd) { 
          return true; 
         } 
         else { 
          return false; 
         } 
         } 


       ); 

兩個功能被點擊相應的複選框時被稱爲時間範圍。問題是當我使用日期範圍的第一個功能,它過濾表的特定日期範圍,但是當我嘗試過濾第二個函數的其他表,只有第一個函數被調用,即哪個永遠的函數首先被調用,只有該函數被調用每一次。 調用函數使用:

$('input[name="radioFilter"]').click(function(){   
       filterFunction(); 
      }); 
      $('input[name="radioFilterSer"]').click(function(){ 
       filterFunctionSer(); 
      }); 
function filterFunction(){ 
//some functions.. 
filterDateRangePatient() 
} 
function filterFunctionSer(){ 
//some functions.. 
filterDateRangeService() 
} 

如何解決這個問題,爲什麼只被稱爲後來也被稱爲第一次的第一個函數,或任何東西,我做錯了。或者是因爲退貨聲明。

回答

0

關於使用參數寫入功能單一什麼,並用它在兩個功能

function filterFunction(){ 
    //some functions.. 
    filterDateRange($("#fromDateSer").val(), $("#toDateSer").val(), 5) 
} 
function filterFunctionSer(){ 
    //some functions.. 
    filterDateRange($("#fromDate").val(), $("#toDate").val(), 6) 
} 

而且filterDateRange功能:(更新:新增搜索功能pop

function filterDateRange(from, to, num){ 

    $.fn.dataTable.ext.search.pop(); 

    $.fn.dataTable.ext.search.push(function(settings, data, dataIndex) {     
     var dateStart = moment(from,"DD/MM/YYYY"); 
     var dateEnd = moment(to,"DD/MM/YYYY"); 

     var evalDate= moment(data[num],"DD/MM/YYYY"); 
     console.log("dateStart +"+dateStart+" dateEnd "+dateEnd); 

     if (evalDate >= dateStart && evalDate <= dateEnd) { 
      return true; 
     } 
     else { 
      return false; 
     } 
    }); 
} 

它將工作。

+0

不,它不工作 –

+1

問題仍然是一樣的,哪個數據表首先被過濾將工作..所以計算出來,過濾功能是保持以前的值存儲在哪裏再過濾將不得不清除功能和然後調用該函數。爲此我們可以使用'$ .fn.dataTable.ext.search.pop()'。爲更多幫助檢查此(http://stackoverflow.com/questions/39774746/reset-filtered-data-in-datatables?rq=1)。 –

+0

是的,忘了在答案中提到它。謝謝。 :) –