在使用ajax时,是否有一种方法可以使用tablesorter来使用表外部的下拉过滤器,该过滤器基于与表中的列无关的条件进行过滤?
例如,如果表是帐户列表,我希望能够过滤过期帐户,即使这不是表中的列之一。表中的每一列也将有自己的标准表排序过滤器。
由于我使用的是 ajax 和服务器端过滤,所以即使列过滤器也只是用于将 $_REQUEST
发送到 ajax url,而不过滤表中显示的内容。因此,我希望能够发送这样的 $_REQUEST
,而不必将 filter_formatter
与特定列关联。
我意识到我可以通过添加虚拟列、使用 filter_formatter
并通过类似于 this example 中所示的示例的更改函数绑定(bind)外部下拉列表来做到这一点,但我希望有一种更简单的方法。
谢谢
最佳答案
尝试使用customAjaxUrl选项。在该回调代码中,您可以获取当前选择的外部过滤器并将其作为字符串附加到发送到您的服务器。像这样的事情:
// modify the url after all processing has been applied
customAjaxUrl: function(table, url) {
// get current selection & add it to the url
return url += '&filter=' + $('.external-filter').val();
}
<小时/>
要回答评论中的问题,您可以尝试绑定(bind)到外部过滤器的更改事件,然后将该过滤器值保存到表数据中(如果您不想使用作用域/全局变量)。尝试这样的事情:
$('.external-filter').on('change', function(){
$('table')
.data('filter_value', $(this).val() )
.trigger('update');
});
然后在 customAjaxUrl
函数中执行以下操作:
// modify the url after all processing has been applied
customAjaxUrl: function(table, url) {
// get current selection & add it to the url
return url += '&filter=' + $(table).data('filter_value');
}
关于jquery - 使用 ajax 时使用带有 tablesorter 的外部过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18820265/