发布
社区首页 >问答首页 >当日期是链接时,使用moment.js对日期进行排序不起作用

当日期是链接时,使用moment.js对日期进行排序不起作用
EN

Stack Overflow用户
提问于 2015-03-04 21:01:43
回答 1查看 7.7K关注 0票数 2

我使用的是DataTables 1.10.5。当我试图使用推荐的moment.js (按照http://datatables.net/blog/2014-12-18)对日期进行排序时,可以认为工作正常:

http://jsfiddle.net/9gohzd9t/1/

但是,当我向该日期添加链接(a href)时,它会对链接进行排序,而不是对日期进行排序:

http://jsfiddle.net/dnsL2oc4/1/

你知道如何在没有太多黑客攻击的情况下妥善解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-05 15:40:06

问题在于datetime-tag.js的unshift方法。Moment试图在给定的"DD-MM-YYYY"-Format中将<a href="12.html">12-01-2001</a>转换为有效日期,但它显然不能这样做。因此,您必须从日期中删除html,可能需要使用如下函数:

代码语言:javascript
代码运行次数:0
复制
function strip(html) {
   var tmp = document.createElement("DIV");
   tmp.innerHTML = html;
   return tmp.textContent || tmp.innerText || "";
}

然后删除unshift方法中的字符串(用下面的代码替换datetime-tag.js):

代码语言:javascript
代码运行次数:0
复制
$.fn.dataTable.moment = function (format, locale) {
  var types = $.fn.dataTable.ext.type;

  // Add type detection
  types.detect.unshift(function (d) {                
      return moment(strip(d), format, locale, true).isValid() ?
          'moment-' + format :
          null;
  });

  // Add sorting method - use an integer for the sorting
  types.order['moment-' + format + '-pre'] = function (d) {
    return moment(strip(d), format, locale, true).unix();
  };
};
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28864853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档