2017-05-19 49 views
0

我想通過選擇一個數字範圍的數據表與自定義過濾器,只能工作一次。我嘗試了很多方法,沒有找到任何東西,所以我來到這裏尋求你的幫助。自定義下拉列表過濾器範圍的數字數據表

<select id="filtro1"> 
     <option value="">Selecione</option> 
     <option value="1-10">1-10</option> 
     <option value="11-16">11-16</option> 
     </select> 

這裏是jQuery的

$(document).ready(function() { 
    $('#filtro1').on("change", function(){ 
     var valor = $(this).val();  
     var arr = valor.split('-'); 

      $.fn.dataTable.ext.search.push(
    function(settings, data, dataIndex) { 
     var min = parseInt(arr[0], 7); 
     var max = parseInt(arr[1], 7); 
     var age = parseFloat(data[7]) || 0; // use data for the age column 

     if ((isNaN(min) && isNaN(max)) || 
      (isNaN(min) && age <= max) || 
      (min <= age && isNaN(max)) || 
      (min <= age && age <= max)) 
     { 
      return true; 
     } 
     return false; 
    } 
); 
table.draw();   

    }); 

var table = $('#classificacao').DataTable({ 
     "lengthMenu": [ [10, 25, 50, 100, -1], [10, 25, 50, 100, "Todos"] ], 
     "processing": true,  
     "oLanguage": { 
      "sUrl": "../busca/pt-br.txt" 
     }, 
     "columnDefs": [ 
      { 
       "targets": [ 7 ], 
       "visible": false 
      } 
     ] 
    }); 
}); 

我把這個例子中使用的輸入型文本

https://datatables.net/examples/plug-ins/range_filtering.html

預先感謝任何幫助。你添加一個新的前

回答

0

只是刪除或pop()任何先前設置的自定義過濾器:

$('#filtro1').on("change", function() { 
    var valor = $(this).val(); 
    var arr = valor.split('-'); 

    if ($.fn.dataTable.ext.search.length>0) { 
    $.fn.dataTable.ext.search.pop(); //<--here 
    } 

    $.fn.dataTable.ext.search.push(
    ... 
); 
    table.draw(); 
}); 

$.fn.dataTable.ext.search是可以容納多個過濾器「層次」的數組。您的代碼只能工作一次,因爲下一個過濾器將在第一個過濾器輸出內運行。

相關問題