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

时间:2014-01-15 13:23:49

标签: jquery jquery-plugins tablesorter

我正在尝试使用Tablesorter的widgetOptions中的filter_formatter将两个字段uiDatepicker应用于标题中包含“Date”的任何列标题。表中的所有其他列都有常规过滤器。当我使用零基(0 =第1列)指定col索引时,我可以正常工作。我认为这将是一个简单的过程,它找到包含'Date'的标题的列索引,并将其作为变量传递给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'(或其他数字)时,它可以工作。为了使这个工作得很好。最终我认为我需要在同一个表中包含多个日期列的'each'循环。感谢

1 个答案:

答案 0 :(得分:0)

遗憾的是,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
    }
});