3

当使用基于与表中的列无关的条件进行过滤的 ajax 时,tablesorter 是否可以使用表外部的下拉过滤器?

例如,如果表是帐户列表,我希望能够过滤过期帐户,即使那不是表中的列之一。表中的每一列也将有自己的标准表排序器过滤器。

由于我使用的是 ajax 和服务器端过滤,因此即使是列过滤器也只是用于将 a 发送$_REQUEST到 ajax url,而不是过滤表中显示的内容。所以我希望能够发送这样一个$_REQUEST而不必filter_formatter与特定列相关联。

我意识到我可以通过添加一个虚拟列来做到这一点,使用filter_formatter,并通过类似于本示例中所示示例的更改功能绑定外部下拉列表但我希望有一种更简单的方法。谢谢

4

1 回答 1

2

尝试使用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();
}

要从评论中回答您的问题,您可以尝试绑定到外部过滤器的更改事件,然后将该过滤器值保存到表数据中(如果您不想使用作用域/全局变量)。尝试这样的事情:

$('.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');
}
于 2013-09-17T20:20:21.980 回答