具有自定义按钮文本和多列的外部过滤器
问题描述:
我正在使用Tablesorter并希望为我的用户添加一些快捷按钮以帮助他们填写过滤器框。如果使用的按钮做工精细如下所述:具有自定义按钮文本和多列的外部过滤器
这里:
我需要改变按钮的标签,即过滤器上与按钮标签不同的东西。我如何添加这个?
另请参见:如何在按下不同按钮时在多列中启用筛选?现在,当按钮被按下
我使用外部按钮按钮jQuery代码看起来像这样所有其他滤波器也被删除:
$('button').click(function(){
var $t = $(this),
col = $t.data('filter-column'), // zero-based index
filter = [];
filter[col] = $t.text(); // text to add to filter
$('#sorttable').trigger('search', [ filter ]);
return false;
});
我想告诉你用
<button class="btn btn-sm btn-primary" data-filter-column="1">50 - 59</button>
<button class="btn btn-sm btn-primary" data-filter-column="0">DIV</button>
的过滤器“DIV”文本我想用其他内容替换,同时仍然应用实际将“DIV”读取到第0列的过滤器,同时我不想删除第50页的“50-59”过滤器可能已添加到列1中。
答
您可以设置代码从一个按钮(demo)
HTML获得一个或多个查询
<button class="btn btn-sm btn-primary" data-filter-column="0,1" data-filter-query="abc,>50">Combo</button>
脚本
$(function() {
$('button').click(function() {
var i,
$t = $(this),
col = $t.attr('data-filter-column').split(/\s*,\s*/), // zero-based index
query = $t.attr('data-filter-query').split(/\s*,\s*/),
filter = [];
for (i = 0; i < col.length; i++) {
var n = parseInt(col[i], 10);
filter[n] = query[i]; // text to add to filter
}
$('#sorttable').trigger('search', [filter]);
return false;
});
$('#sorttable').tablesorter({
theme: 'blue',
widgets: ['zebra', 'filter']
});
});
或者,你可以使用内置的搜索一系列列的方法 - 请参阅this demo。
更新:尝试this demo,尝试使用每个按钮单击更新现有过滤器。使用重置按钮清除所有内容
$(function() {
var $table = $('#sorttable');
$('button:not(.reset)').click(function() {
var i,
$t = $(this),
col = $t.data('filter-column'), // zero-based index
query = $t.attr('data-filter-query'),
// get the current filter values
filter = $.tablesorter.getFilters($table);
filter[col] = query; // text to add to filter
$table.trigger('search', [filter]);
return false;
});
$table.tablesorter({
theme: 'blue',
widgets: ['zebra', 'filter'],
widgetOptions: {
filter_reset: '.reset'
}
});
});
谢谢您的建议。不幸的是,这意味着我必须为每个可能的过滤器组合制作按钮。这两个按钮就是一个例子。我有10个预定义的按钮,为我的三个列添加了不同的过滤器,如果我理解正确,那么您的建议会添加相当多的组合按钮? 我在查看示例时没有找到data-filter-quiry,所以我将开始使用该示例。谢谢! –
好吧,试试我更新的答案。 – Mottie
太棒了。我会尝试一下。谢谢! –