jQuery tablesorter外部日期范围过滤器

时间:2014-01-27 02:18:44

标签: javascript jquery html asp.net tablesorter

我使用tablesorter(一个jQuery插件)和一个自定义表格,我想用日期范围过滤该表格,如example。与此示例不同,我希望将我的日期范围放在表格之外。我知道他们已经包含了在上一次更新here中在表外设置过滤器的方法。我想知道是否有可能。如果没有,有没有办法用Javascript做到这一点?

我想要这样的事情:

filter_functions: {

    MySelectBox :{
                "Show all"   : function(e, n, f, i) {
                    return ; // Show all entries
                 },
                "Newest": function(e, n, f, i) {
                    return ; // Today's entries
                 }
    }
}

我不是javascript的专家,所以我会感谢任何帮助。

感谢。

1 个答案:

答案 0 :(得分:0)

我认为最简单的解决方案是继续添加所有默认过滤器输入。添加外部选择并使其更新内部选择;然后隐藏过滤器行(demo):

HTML

<select>
    <option>Show all</option>
    <option>Newest</option>
    <option>Older</option>
</select>
<table class="tablesorter">
    <thead>
        <tr>
            <th>First Name</th>
            <th>Last Name</th>
            <th>Age</th>
            <th data-placeholder="Show all">Date</th>
        </tr>
    </thead>
    <tbody>
    ...
    </tbody>
</table>

CSS

.tablesorter-filter-row {
    display: none;
}

脚本

var $table = $('table'),
    today = new Date().getTime();

$('select').change(function () {
    $table
        // target the 4th (zero-based index) filter
        // and update it with the value from the external select
        .find('.tablesorter-filter').eq(3).val( $(this).val() )
        .change();
});

$table.tablesorter({
    widgets: ['zebra', 'filter'],
    widgetOptions: {
        filter_functions: {
            3: {
                "Newest": function (e, n, f, i) {
                    return n >= today;
                },
                "Older": function (e, n, f, i) {
                    return n < today;
                }
            }
        }

    }
});