Bootstrap,datatable,filter方法的结果被忽略

时间:2015-10-24 23:36:11

标签: jquery datatables

我有最新的DataTable插件。在document.ready中:

$('#admin_users_table').DataTable().column(3).data().filter(function(v) {
  console.log(v+'         '+Math.random());
  return false;
});

在网站加载时运行一次,并记录好的值。现在,如果我更改下拉列表:

$('#admin_users_filter').change(function() {
  console.clear();
  $('#admin_users_table').DataTable().draw();
});
它不会工作。实际上,问题在于return是什么,它不会影响哪些行得到什么,什么不行。

1 个答案:

答案 0 :(得分:1)

filter()不是对表生效的搜索功能。其目的是让您将表的内容提取为新的API实例,而不是过滤内容。

示例,通过<select>框选择控制列#3以某个字母开头的所有行:

$("#filter").change(function() {
    var that = this;
    var filteredValues = table.column(3).data().filter(function(value, index ) {
        return value.toLowerCase().substr(0,1) == that.value;
    })
    //console out all matches
    console.log(filteredValues);
})    

如果要以编程方式过滤表,并且不想使用内置search()函数,则可以实现自定义过滤器。下面与上面的内容完全相同,但这次操作发生在表格本身上:

$("#search").change(function() {
  var that = this;  
  $.fn.dataTable.ext.search.push(
     function(settings, data, dataIndex) {
        return data[3].toLowerCase().substr(0,1) == that.value;
     }
  )    
  table.draw();
  //reset the custom filter 
  $.fn.dataTable.ext.search.pop();  
});

这里的两个例子 - &gt;的 http://jsfiddle.net/khbt2hhm/