在使用变量作为列索引的列上使用 jQuery Tablesorter filter-formatter 小部件

Posted

技术标签:

【中文标题】在使用变量作为列索引的列上使用 jQuery Tablesorter filter-formatter 小部件【英文标题】:Using jQuery Tablesorter filter-formatter widgets on column using a variable as column index 【发布时间】:2014-02-03 23:48:08 【问题描述】:

我正在尝试使用 Tablesorter 的 widgetOptions 中的 filter_formatter 将两个字段 uiDatepicker 应用于标题中包含“日期”的任何列标题。表中的所有其他列都有常规过滤器。当我使用零基数(0= 第一列)指定 col 索引时,我可以让这一切正常工作。我认为这将是一个简单的过程,它找到包含“日期”的标题的列索引并将其作为变量传递给 filter_formatter,但列索引似乎不接受变量。

我希望我已经足够清楚地解释了这一点。谁能帮忙。

    dateColumn = $('th:contains("Date")').index();

$('table').tablesorter(
    widgets: ["zebra", "filter", "uitheme"],
    widgetOptions : 
        filter_columnFilters : true,
        filter_startsWith : true,
        filter_searchDelay : 300,
        filter_reset : '.reset',
        filter_formatter : 
            dateColumn  : function ($cell, indx) 
            return $.tablesorter.filterFormatter.uiDatepicker( $cell, indx, 
            textFrom: 'from',   // "from" label text
            textTo: 'to',       // "to" label text
            dateFormat: 'dd/mm/yy' ,
            changeMonth: true,
            changeYear : true
            );
        

    


);

这就是我认为可以让它发挥作用的方法。当 'dateColumn' 替换为 '1'(或其他数字)时,它会起作用。最终,我认为我需要为同一个表中的多个日期列包含一个“每个”循环。谢谢

【问题讨论】:

【参考方案1】:

遗憾的是,filter_formatter 函数不能这样工作。现在,您必须在表初始化之前设置filter_formatter。我确实计划允许按类或 id 引用列(请参阅issue #237),但我还没有编写出代码。

var filterFormatter = ;
$('table thead .date').each(function()
    var column = $(this).index(); // assuming no colspans in the row
    filterFormatter[column] = function ($cell, indx) 
        return $.tablesorter.filterFormatter.uiDatepicker( $cell, indx, 
            textFrom: 'from',   // "from" label text
            textTo: 'to',       // "to" label text
            dateFormat: 'dd/mm/yy' ,
            changeMonth: true,
            changeYear : true
        );
    
);
$('table').tablesorter(
    widgets: ["zebra", "filter", "uitheme"],
    widgetOptions : 
        filter_columnFilters : true,
        filter_startsWith : true,
        filter_searchDelay : 300,
        filter_reset : '.reset',
        filter_formatter : filterFormatter
    
);

【讨论】:

这正是我想要做的。做得好。谢谢你。这是一种享受。

以上是关于在使用变量作为列索引的列上使用 jQuery Tablesorter filter-formatter 小部件的主要内容,如果未能解决你的问题,请参考以下文章