Jquery Datatables 1.10搜索功能只能运行一次

时间:2014-10-08 02:01:43

标签: jquery jquery-datatables datatables-1.10

我尝试在用户点击搜索按钮时对数据表执行搜索。

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

我认为这种行为是因为在完成新的搜索之前需要清除所有现有搜索。我无法弄清楚如何做到这一点。

以下是代码:

$(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

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

1 个答案:

答案 0 :(得分: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();
  });
} );