我尝试在用户点击搜索按钮时对数据表执行搜索。
如果单击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
任何人都有任何想法如何使这项工作?
答案 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();
});
} );