使用ajax时使用带有tablesorter的外部过滤器

时间:2013-09-16 04:07:14

标签: jquery ajax filtering server-side tablesorter

当使用ajax根据与表中的列无关的条件进行过滤时,tableorter是否有办法在表外部使用下拉过滤器?

例如,如果该表是一个帐户列表,我希望能够过滤过期的帐户,即使这不是表中的一列。表中的每一列也都有自己的标准tableorter过滤器。

由于我正在使用ajax和服务器端过滤,所以即使是列过滤器也只是用于向{a} ajax url发送$_REQUEST而不过滤表中显示的内容。因此,我希望能够发送此类$_REQUEST,而无需将filter_formatter与特定列相关联。

我意识到我可以通过添加一个虚拟列,使用filter_formatter来实现这一点,并通过类似于this example中显示的示例的更改函数绑定外部下拉列表,但我希望有一个更简单的方法。 感谢

1 个答案:

答案 0 :(得分:1)

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