mottie tablesorter 2.10.8,触发自定义过滤功能

时间:2013-07-16 01:00:14

标签: tablesorter

我想知道是否有一种简单的方法来触发客户过滤功能。我已将列ZERO设置为可过滤。但我想以编程方式触发自定义过滤器功能,因为它根据其他条件(而不仅仅是过滤器输入字段中的文本)进行过滤。因此,用户不必在过滤器输入字段中输入文本。他们可以单击一个复选框,我希望该复选框在tablesorter中触发自定义过滤器功能。

我试过了两个:

var filters = []; filters[0] = ''; $.tablsorter.seFilters($('table'),filters,true));

我也尝试过这种方式:

var columns = []; columns[0] = ''; $('table').trigger('search', [columns]);

除非过滤器[0]有一些数据(即过滤器输入字段有一些值),否则两种方式都不起作用。我想能够在输入过滤器字段中没有任何内容时触发自定义过滤器功能)

Thanx提前, 莱斯利

2 个答案:

答案 0 :(得分:1)

我不确定它是否只是一个拼写错误,但该函数被称为$.tablesorter.setFilters(),如果你传递一个空数组,它将清除过滤器(重置)。这是一个简单的demo

HTML(不包括表格)

<button data-search="1">1</button>
<button data-search="zyx">zyx</button>
<button data-search="">Clear</button>

脚本

$(function () {
    $('table').tablesorter({
        theme: 'blue',
        widgets: ['zebra', 'filter']
    });

    $('button').click(function () {
        var filter = $(this).attr('data-search');
        // only the first column filter is targetted
        $.tablesorter.setFilters($('table'), [filter], true);
    });
});

将演示中的[filter]更改为[],以证明它适用于空数组。您甚至可以将[filter]更改为''(空字符串)以重置过滤器。

此外,如果您有兴趣,这里有一个more elaborate demo,其中包含来自this SO question的可切换按钮。

答案 1 :(得分:0)

我在这里找到了一个我想要的例子:

// Add these options to the select dropdown (regex example)
    2 : {
      "A - D" : function(e, n, f, i) { return /^[A-D]/.test(e); },
      "E - H" : function(e, n, f, i) { return /^[E-H]/.test(e); },
      "I - L" : function(e, n, f, i) { return /^[I-L]/.test(e); },
      "M - P" : function(e, n, f, i) { return /^[M-P]/.test(e); },
      "Q - T" : function(e, n, f, i) { return /^[Q-T]/.test(e); },
      "U - X" : function(e, n, f, i) { return /^[U-X]/.test(e); },
      "Y - Z" : function(e, n, f, i) { return /^[Y-Z]/.test(e); }
    },

基本上,我可以添加一个过滤器下拉列表来进行自定义过滤。这意味着我的列可以有一个选择列表,每个列都会执行自己的自定义过滤来隐藏/显示行。但我需要的是翻译列表中显示的文本。我使用jquery i18n插件进行翻译。它从服务器检索翻译后的字符串,如下所示:

var labelInText = i18nTranslateText('LABEL_IN');
var labelNearText = i18nTranslateText('LABEL_NEAR');
var labelOutOfText = i18nTranslateText('LABEL_OUTOF');

然后我的过滤功能可以是:

 2 : {
        labelInText      : function(e, n, f, i) { return n < 10; },
        labelNearText : function(e, n, f, i) { return n >= 10 && n <=100; },
        labelOutOfText     : function(e, n, f, i) { return n > 100; }
     }

但下拉显示“labelInText”而不是翻译文本“Label In”。

您知道下拉列表是否有一种简单的方法可以显示已翻译的文本?