2017-05-19 5 views
0

データセットで数値の範囲を選択してカスタムフィルタを作成しようとしていますが、これは一度しか動作しません。私はいろいろ試してみましたが、何も見つからなかったので、私はあなたの助けを求めるためにここに来ました。ここでカスタムドロップダウンフィルタ数値データテーブルの範囲

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

は、私はすべての助けを事前に

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

感謝を入力タイプのテキストを使用してこの例を取っ​​た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 
      } 
     ] 
    }); 
}); 

です。あなたは新しいものを追加する前に

答えて

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は「階層」は、複数のフィルタを保持できる配列です。あなたのコードは、次のフィルタが最初のフィルタ出力内で動作するため、一度しか動作しません。