https://communitychessclub.com/examine.php带有moment.js的数据表将日期排序为字符串,而不是日期。如何获得日期为“ 08/23/2018”的样本以正确排序?也就是说,我要对“ mm / dd / yyyy”进行排序。我根本无法解决这个问题。
<script src="//cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>
<script src="//cdn.datatables.net/plug-ins/1.10.19/sorting/datetime-moment.js"></script>
<script src="js/dataTables.keepConditions.min.js"></script>
<script>
$.fn.dataTable.moment = function ( format, locale ) {
var types = $.fn.dataTable.ext.type;
// Add type detection
types.detect.unshift( function ( d ) {
return moment( 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( d, format, locale, true ).unix();
};
};
</script>
<script>
$(document).ready(function() {
$.fn.dataTable.moment( 'MM/DD/YYYY' );
$('#cccr').DataTable( {
"ajax": "assets/games.ajax",
"pageLength": 25,
"order": [[ 8, "desc" ]],
"columns": [
{ "data": "Date", "width": "7rem", },
{ "data": "Event" },
{ "data": "ECO" },
{ "data": "White" },
{ "data": "WhiteElo" },
{ "data": "Black" },
{ "data": "BlackElo" },
{ "data": "Result" },
{ "data": "game", visible : false }
]
} );
} );
</script>
答案 0 :(得分:1)
找到了罪魁祸首。在数据中-下一行:
{
"game": "5533",
"Date": "05/1/2010",
"Event": "RCC FIDE RR #2",
"ECO": "C56",
"White": "Nikolayev, Igor (FM)",
"WhiteElo": "2367",
"Black": "Jones, Aaaron",
"BlackElo": "1966",
"Result": "1-0"
},
您具有DD
格式,但此处的日期具有D
格式,这使其成为另一种格式,最终使表格排序混乱。 >
下面是一行包括的小偷:
http://plnkr.co/edit/eYRVBr8P4g7Ua4Z7K6JG?p=preview
修复了上述日期格式,这是一个新的插件:
http://plnkr.co/edit/zPF9LDZjAAZeqXIJ3XOF?p=preview
正如Alan(DataTables作者)在此comment中建议的那样:
目前,该插件在每列中仅支持一种格式。如果可能需要修改,如果您需要在单个列中支持两种或更多种格式。
为所有日期使用通用格式将帮助您解决问题。
希望这会有所帮助。