1

当用户单击搜索按钮时,我正在尝试对数据表执行搜索。

如果我单击 NY/London 按钮,表格将正确过滤。如果我现在单击 San Francisco 按钮,表格将不显示任何记录。

我认为这种行为是因为需要先清除表中的所有现有搜索,然后才能完成新搜索。我不知道该怎么做。

这是代码:

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

  function filter_table(param1,param2){
     $.fn.dataTable.ext.search.push(
             function( settings, data, dataIndex ) { 
               if ( data[2]==param1 || data[2]==param2){return true;}
               return false;
             }
        ); 
  }


  $("#ny_london").click(function(){
    filter_table('New York','London');
    table.draw();
  });


  $("#sf").click(function(){
    filter_table('San Francisco',null);
    table.draw();
  });

} );

这是表格和代码的实时链接。

http://live.datatables.net/tulavila/1/edit

任何人有任何想法如何使这项工作?

4

1 回答 1

0

您的问题是每次单击其中一个按钮时都添加了其他过滤器,但从不删除旧的过滤器。您真正需要的是在每次单击时重绘表格之前更改的几个全局变量。search一旦将过滤器推送到数组,过滤器就会自动应用于每个重绘。

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

  $.fn.dataTable.ext.search.push(
       function( settings, data, dataIndex ) { 
           if ( data[2]==param1 || data[2]==param2){return true;}
           return false;
       }
  ); 

  $("#ny_london").click(function(){
    param1 = 'New York';
    param2 = 'London';
    table.draw();
  });

  $("#sf").click(function(){
    param1 = 'San Francisco';
    param2 = '';
    table.draw();
  });
} );
于 2016-12-07T14:47:54.003 回答