自定义下拉过滤器数字数据表范围

时间:2017-05-19 15:06:46

标签: jquery datatable

我试图通过选择带有数据表的一系列数字来制作自定义过滤器,并且只能使用一次。我在很多方面都尝试过,没有找到任何工作,也没有找到我找到的任何东西,所以我来到这里寻求你的帮助。

<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

提前感谢您的帮助。

1 个答案:

答案 0 :(得分: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是一个数组,可以容纳多个过滤器&#34;层次结构&#34;。您的代码只能运行一次,因为下一个过滤器将在第一个过滤器输出中运行。