与日期范围

问题描述:

数据表滤波器我有一个页面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() 
} 

如何解决这个问题,为什么只被称为后来也被称为第一次的第一个函数,或任何东西,我做错了。或者是因为退货声明。

关于使用参数写入功能单一什么,并用它在两个功能

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

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