jag*_*get 58 jquery datatables date-sorting
我正在使用一个名为datatables的Jquery插件
它太棒了,但根据dd/mm/yyyy格式,我无法正确排序日期.
我查看了他们的支持格式,但这些修复似乎都不起作用.
有人可以帮我吗?
Zah*_*med 113
这是工作jQuery解决方案.
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"date-uk-pre": function ( a ) {
var ukDatea = a.split('/');
return (ukDatea[2] + ukDatea[1] + ukDatea[0]) * 1;
},
"date-uk-asc": function ( a, b ) {
return ((a < b) ? -1 : ((a > b) ? 1 : 0));
},
"date-uk-desc": function ( a, b ) {
return ((a < b) ? 1 : ((a > b) ? -1 : 0));
}
} );
Run Code Online (Sandbox Code Playgroud)
将上面的代码添加到脚本中,并将具有Date值{ "sType": "date-uk" }和其他值的特定列设置为null,请参见下文:
$(document).ready(function() {
$('#example').dataTable( {
"aoColumns": [
null,
null,
null,
null,
{ "sType": "date-uk" },
null
]
});
});
Run Code Online (Sandbox Code Playgroud)
如果你想要一个快速的解决方案,你可以在特定格式(YYYYMMDD)的每一行中附加实际的DateTime值,并使用CSS隐藏它,它将允许您在没有任何javascript更改的情况下对该列进行排序.
HTML
<td data-sort='YYYYMMDD'>DD/MM/YYYY</td>
Run Code Online (Sandbox Code Playgroud)
CSS
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"date-uk-pre": function ( a ) {
var ukDatea = a.split('/');
return (ukDatea[2] + ukDatea[1] + ukDatea[0]) * 1;
},
"date-uk-asc": function ( a, b ) {
return ((a < b) ? -1 : ((a > b) ? 1 : 0));
},
"date-uk-desc": function ( a, b ) {
return ((a < b) ? 1 : ((a > b) ? -1 : 0));
}
} );
Run Code Online (Sandbox Code Playgroud)
Anu*_*l S 74
将日期转换为YYYYMMDD格式并添加到实际值(DD/MM/YYYY)中<td>,将其包装在元素中,将样式设置display:none;为元素.现在日期排序将作为正常排序.同样可以应用于日期时间排序.
HTML
<table id="data-table">
<tr>
<td><span>YYYYMMDD</span>DD/MM/YYYY</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
CSS
#data-table span {
display:none;
}
Run Code Online (Sandbox Code Playgroud)
max*_*777 32
我知道这是一个老问题,答案也很老.最近我遇到了一种简单而干净的日期排序方式.它可以通过HTML5 data-order属性来完成<td>.
这是我在PHP中所做的:
<?php
$newdate = date('d M Y', $myDateTime); // Format in which I want to display
$dateOrder = date('Y-m-d', $myDateTime); // Sort Order
?>
<td data-order="<?php echo $dateOrder; ?>" >
<?php echo $newdate; ?>
</td>
Run Code Online (Sandbox Code Playgroud)
Rey*_*gle 11
这样它对我有用。
<td data-order="@item.CreatedOn.ToString("MMddyyyyHHmmss")">
@item.CreatedOn.ToString("dd-MM-yyyy hh:mm tt")
</td>
Run Code Online (Sandbox Code Playgroud)
data-order属性中的此日期格式应采用 DataTable 支持的此格式。
如果您不想使用momentum.js 或任何其他日期格式,您可以在日期值中添加以毫秒为单位的日期格式,以便根据毫秒进行排序。并隐藏毫秒日期格式。
示例代码:
var date = new Date();
var millisecond = Date.parse(date);
Run Code Online (Sandbox Code Playgroud)
HTML
<td>'<span style="display: none;">' + millisecond + "</span>" + date + </td>
Run Code Online (Sandbox Code Playgroud)
就是这样。
| 归档时间: |
|
| 查看次数: |
121580 次 |
| 最近记录: |