2

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

我都试过了:

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

我也尝试过这种方式:

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

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

提前谢谢,莱斯利

4

2 回答 2

2

我不确定这是否只是一个错字,但该函数被调用$.tablesorter.setFilters(),如果你传递一个空数组,它将清除过滤器(重置)。这是一个简单的演示

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]''(空字符串)来重置过滤器。

此外,如果您有兴趣,这里有一个更详细的演示,带有来自这个 SO question的可切换按钮。

于 2013-07-16T02:27:41.603 回答
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”。

你知道下拉列表是否有一种简单的方法来显示翻译文本吗?

于 2013-07-16T23:49:45.483 回答