【问题标题】:How to sort date when using excel-bootstrap-table-filter jQuery pluggin使用 excel-bootstrap-table-filter jQuery 插件时如何对日期进行排序
【发布时间】:2018-05-05 02:37:43
【问题描述】:

我正在使用excel-bootstrap-table-filter jQuery 插件对我网站上的表格进行排序。除了对日期字段进行排序外,它的工作原理就像做梦一样。我有DD MMM YYYY 格式的日期。

excel-bootstrap-table-filter 正在根据 DD 值对表进行排序。有人知道如何让插件正确排序日期吗?

【问题讨论】:

    标签: jquery


    【解决方案1】:

    由于您正在使用此 plugin,因此没有实现 date 过滤器。你需要用下面的代码替换FilterCollection.prototype.sort函数

    FilterCollection.prototype.sort = function(column, order, table, options) {
        var flip = 1;
        if (order === options.captions.z_to_a.toLowerCase().split(' ').join('-')) flip = -1;
        var tbody = $(table).find('tbody').get(0);
        var rows = $(tbody).find('tr').get();
        var th = $(table).find('th')[column];
        var isType = th.getAttribute('istype');
        var dateformat = th.getAttribute('dateformat');
        rows.sort(function(a, b) {
            var A = a.children[column].innerText.toUpperCase();
            var B = b.children[column].innerText.toUpperCase();
            if (isType == 'date') {
                A = moment(A, dateformat);
                B = moment(B, dateformat);
                return A.diff(B, 'd') * flip;
            } else if (!isNaN(Number(A)) && !isNaN(Number(B))) {
                if (Number(A) < Number(B)) return -1 * flip;
                if (Number(A) > Number(B)) return 1 * flip;
            } else {
                if (A < B) return -1 * flip;
                if (A > B) return 1 * flip;
            }
            return 0;
        });
        for (var i = 0; i < rows.length; i++) {
            tbody.appendChild(rows[i]);
        }
    };
    

    在这个FIDDLE中,我使用相同的插件创建了一个演示,并使用上面提到的代码修改了排序方法。这里我使用了moment.js。我希望这将帮助/指导您实现您的要求。

    表格代码

    <table id="table" class="table table-bordered table-intel">
        <thead>
            <tr>
                <th class="filter">Animal</th>
                <th class="filter">Class</th>
                <th class="filter">Collective Noun</th>
                <th dateformat="DD MM YYYY" isType="date" class="filter">Date</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>Bear</td>
                <td>Mammal</td>
                <td>Sleuth</td>
                <td>11 04 2018</td>
            </tr>
            <tr>
                <td>Ant</td>
                <td>Insect</td>
                <td>Army</td>
                <td>11 05 2018</td>
            </tr>
            <tr>
                <td>Salamander</td>
                <td>Amphibian</td>
                <td>Congress</td>
                <td>11 04 2018</td>
            </tr>
            <tr>
                <td>Owl</td>
                <td>Bird</td>
                <td>Parliament</td>
                <td>10 04 2018</td>
            </tr>
            <tr>
                <td>Frog</td>
                <td>Amphibian</td>
                <td>Army</td>
                <td>1 04 2018</td>
            </tr>
            <tr>
                <td>Shark</td>
                <td>Fish</td>
                <td>Gam</td>
                <td>11 04 2018</td>
            </tr>
            <tr>
                <td>Kookaburra</td>
                <td>Bird</td>
                <td>Cackle</td>
                <td>21 04 2018</td>
            </tr>
            <tr>
                <td>Crow</td>
                <td>Bird</td>
                <td>Murder</td>
                <td>23 04 2018</td>
            </tr>
            <tr>
                <td>Elephant</td>
                <td>Mammal</td>
                <td>Herd</td>
                <td>11 03 2018</td>
            </tr>
            <tr>
                <td>Barracude</td>
                <td>Fish</td>
                <td>Grist</td>
                <td>30 04 2018</td>
            </tr>
        </tbody>
    </table>
    

    【讨论】:

    • 感谢 Jadhav,因为该表格按预期按日期排序,所以效果很好。我没有使用类过滤器并保留了我原来的类,它仍然有效。但是,日期未在下拉列表中正确排序。最好也能正确排序,让用户更容易选择日期间隔,还要感谢集体动物名称的课程。
    • @Narendra,您能否在日期列的相应下拉列表中添加日期格式(如 excel),以便选择此链接中提到的年或月或日数据。查看图片。如何在日期列上应用 excel 过滤等年、月和日格式。 github.com/chestercharles/excel-bootstrap-table-filter/issues/…
    猜你喜欢
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 2013-03-04
    • 2019-11-04
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    相关资源
    最近更新 更多