2016-09-20 156 views
0

我一直在尝试使用datatables.net的数据表来尝试范围过滤器。 但我的价格栏价格从数百万到数百万不等。因此,它需要用逗号分隔一个,十个,几百个,几千个等等。使用DataTables的范围过滤器language.decimal

我见过Datatable的language.decimal。但它似乎并没有工作。

这是我的DataTable()的声明;

var table = $('#example').DataTable({ 
     "language": { 
     "decimal": "-", 
     "thousands": "." 
     } 
    }); 

回答

0

您应该只需要通过删除非数字值将大值存在的字符串转换为数字。基于dataTables上的range filter example,我在这里使用正则表达式对读取的值进行了处理。我在fiddle中做了一些典型的测试数据,这些测试数据使用第5列作为薪水,但是您应该可以相应地进行修改:

$(document).ready(function() { 
    var table = $('#example').DataTable(); 

    // Event listener to the two range filtering inputs to redraw on input 
    $('#min, #max').keyup(function() { 
     table.draw(); 
    }); 
}); 

$.fn.dataTable.ext.search.push(
    function(settings, data, dataIndex) { 
     var min = parseInt($('#min').val(), 10); 
     var max = parseInt($('#max').val(), 10); 

     // MODIFY THE COLUMN FOR VALUE: 
     var value = parseFloat(data[5].replace(/\D/g,'')) || 0; 

     if ((isNaN(min) && isNaN(max)) || 
      (isNaN(min) && value <= max) || 
      (min <= value && isNaN(max)) || 
      (min <= value && value <= max)) 
     { 
      return true; 
     } 
     return false; 
    } 
);