dataTables:在RTL网站中使用Bootstrap对日期排序不正常

时间:2017-03-13 08:25:54

标签: javascript twitter-bootstrap sorting datatables

This is我表的小提琴: 按日期的表顺序在seconf页面中断。

正如您所看到的那样,排序效果不佳(第二页)。 在我的网站上,它甚至是最糟糕的。排序分拣第一天(dd)而不是月份(mm),最后一年(yyyy)例如02/10/2015将在2017年2月2日之前出现。

我还有一个不会出现在小提琴中的双箭头,是什么导致它?

enter image description here

这是我正在使用的脚本:

function cc(){
    $('.CssDeleteFolder').click();
}

$('.CssDeleteFolder').click(function () {
        var fileName = GetHiddenFilename(this);
        var defaultname = fileName.replace(/^.*[\\\/]/, '');
        defaultname = decodeURIComponent(defaultname);
        if (confirm('Do you want to delete the folder ' + defaultname + ' and all the sub-folders ?')) {
            location.href = "actiondeletefolder.htm?fullfilename=" + fileName + "&origurl=" + GetOrigUrl() + AdditionalURL();
        }
});

任何帮助都会很棒,我的网站可以更好地看到这个问题。如果有人要求现场查看问题,我会提供密码和用户名。

1 个答案:

答案 0 :(得分:0)

您有两个问题:

  1. 您在日期列中添加了混合内容。事实上,日期部分是HTML列的次要部分。您需要提取日期值,例如通过准备

    $.fn.dataTableExt.ofnSearch['extract-date'] = function(value) { ... }
    

    并且可以通过type: 'date'

  2. 使用本机日期排序
  3. 但是这不起作用,因为你的日期是欧洲风格的dd / mm / yyyy,你也必须转换日期。您可以做的最好的事情是构建自己的日期解析器插件。以下是解决特定情况的方法:

  4. jQuery.extend( jQuery.fn.dataTableExt.oSort, {
        "extract-date-pre": function(value) {
            var date = $(value, 'span')[0].innerHTML;
            date = date.split('/');
            return Date.parse(date[1]+'/'+date[0]+'/'+date[2])
        },
        "extract-date-asc": function(a, b) {
            return ((a < b) ? -1 : ((a > b) ? 1 : 0))
        },
        "extract-date-desc": function(a, b) {
            return ((a < b) ? 1 : ((a > b) ? -1 : 0))
        }
    });
    

    用法:

    columnDefs: [{
       type: 'extract-date',
       targets: [0]
    }
    

    注意:我没有在extract-date-pre进行任何健全性检查。在盲目地尝试date项目之前测试parse()数组是明智的。

    更新了工作小提琴 - &gt;的 https://jsfiddle.net/v7oozsLv/3/

    对于多箭头问题,它是由插件和CSS之间的版本混合引起的,即bootstrap和你的设置。我不能帮助,因为我不知道你的设置。已经多次回答过这个问题,如果没有代码,这将是一个纯粹的猜测。在某个地方,我相信,您有dataTables.bootstrap.cssdataTables.bootstrap.js,但没有正确使用它。阅读文档并尝试错误。