Datatables 在yadcf插件中对自定义日期格式进行排序

Datatables 在yadcf插件中对自定义日期格式进行排序,datatables,yadcf,Datatables,Yadcf,我将jquery数据表与moment.js和yadcf插件一起使用 在我的表格中,我有一个格式为dd.mm.yyy的日期字段-为了正确排序,我使用了矩插件,这非常有效 但在yadcf过滤器中,它被排序为“alpha”,如 01.09.2020 2019年5月21日 30.04.2020 30.08.2025 2017年12月31日 31.12.2021 但我需要 2017年12月31日 2019年5月21日 30.04.2020 01.09.2020 31.12.2021 30.08.20

我将jquery数据表与moment.js和yadcf插件一起使用

在我的表格中,我有一个格式为dd.mm.yyy的日期字段-为了正确排序,我使用了矩插件,这非常有效

但在yadcf过滤器中,它被排序为“alpha”,如

  • 01.09.2020
  • 2019年5月21日
  • 30.04.2020
  • 30.08.2025
  • 2017年12月31日
  • 31.12.2021
但我需要

  • 2017年12月31日
  • 2019年5月21日
  • 30.04.2020
  • 01.09.2020
  • 31.12.2021
  • 30.08.2025
如何使用moment.js对值进行排序


谢谢。

更新:请参见下面回答实际问题的编辑2

似乎在日期列的yadcf参数中添加
sort_as:'alphaNum'
就可以了:

$(文档).ready(函数(){
$.fn.dataTable.moment('DD.MM.YYYY');
$('#test').dataTable().yadcf([
{列编号:0,选择类型:'select'},
{列编号:1,选择类型:'select',排序为:'alphaNum'}
]);
});
编辑:如果还希望将默认排序更改为日期列,则需要将
顺序
参数添加到
数据表
对象本身:

$(文档).ready(函数(){
$.fn.dataTable.moment('DD.MM.YYYY');
$('#test')。数据表({
“订单”:[[1,‘asc']]
})yadcf先生([
{列编号:0,选择类型:'select'},
{列编号:1,选择类型:'select',排序为:'alphaNum'}
]);
});
编辑2:如果要对yadcf选择/下拉列表进行排序,我看到的唯一选项是拥有自己的排序功能:

$(文档).ready(函数(){
$.fn.dataTable.moment('DD.MM.YYYY');
$('#test')。数据表({
“订单”:[[1,‘asc']]
})yadcf先生([
{列编号:0,选择类型:'select'},
{列编号:1,选择类型:'select',排序方式:'custom',排序方式:'custom'func:function(一,二){
if(时刻(一,“DD.MM.YYYY”).isAfter(时刻(二,“DD.MM.YYYY”)){return true}
else{return false}
}
}
]);
});

您应该将日期转换为YYYY-MM-DD,并将其放在可见日期前面的隐藏元素中。那么阿尔贝基排序就行了。您可以使用纯javaScript使用
Date()
,在这里没有
时刻的nood
。@Lofihelskinki感谢您的输入,我非常感谢。但是它对我不起作用,我做了一个JSFIDLE谢谢,我以前试过,但它不起作用?看,也许有误解。我的意思是yadcf过滤器中的排序:排序器应该与数据单元中的排序器相同(第一个条目:2017年12月31日;最后一个条目:2025年8月15日),现在我知道了。相应地编辑了答案。return true/false对我不起作用,我使用return-1/1