繁体   English   中英

按英国日期排序jQuery数据表并忽略空单元格

[英]Sort a jQuery datatable by UK date and ignore empty cells

在以dd/mm/yyyy格式排序日期时,如何将空单元格粘到底部? 我的问题在这里(排序年龄栏): http//jsfiddle.net/dup75/11/

$('#hr_curriculum_interns').dataTable( {
    "aoColumns": [
        { "sType": "date-uk" },
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ]
}); 

这里的着名代码可以在http://datatables.net/forums/discussion/4025/sorting-to-ignore-empty-cells上看到,代码是:

    $.fn.dataTableExt.oSort['mystring-asc'] = function(x,y) {
    var retVal;
    x = x.replace(' ', '');
    y = y.replace(' ', '');

    if (x == y) retVal = 0;
    else if (x.substr(0,1) == "{" && y.substr(0,1) == "{") {
        if (x > y) retVal=  1;
        else retVal =  -1;
    }
    else if (x.substr(0,1) == "{") retVal =  1;
    else if (y.substr(0,1) == "{") retVal =  -1;

    else if (x > y) retVal=  1;
    else return -1;

    return retVal;
}
$.fn.dataTableExt.oSort['mystring-desc'] = function(y,x) {
    var retVal;
    x = x.replace(' ', '');
    y = y.replace(' ', '');

    if (x == y) retVal= 0;
    else if (x.substr(0,1) == "{" && y.substr(0,1) == "{") {
        if (x > y) retVal=  -1;
        else retVal =  1;
    }  
    else if (x.substr(0,1) == "{") retVal =  -1;
    else if (y.substr(0,1) == "{") retVal =  1;

    else if (x > y) retVal =  1;
    else return -1;

    return retVal;
 }

但它并没有解决我在以dd / mm / yyy格式排序我的列“age”时遇到的问题。 它只是以整数格式制作我的列,这不应该是因为它的日期格式。

请参阅下面的更新小提琴或StackSnippet。 基本上您需要实现自定义排序功能。 以下是该排序函数的代码以及解释:

 // add a set of custom sorting functions jQuery.extend(jQuery.fn.dataTableExt.oSort, { "customdatesort-pre": function(a) { // returns the "weight" of a cell value var r, x; if (a === null || a === "") { // for empty cells: weight is a "special" value which needs special handling r = false; } else { // otherwise: weight is the "time value" of the date x = a.split("/"); r = +new Date(+x[2], +x[1] - 1, +x[0]); } console.log("[PRECALC] " + a + " becomes " + r); return r; }, "customdatesort-asc": function(a, b) { // return values are explained in Array.prototype.sort documentation if (a === false && b === false) { // if both are empty cells then order does not matter return 0; } else if (a === false) { // if a is an empty cell then consider a greater than b return 1; } else if (b === false) { // if b is an empty cell then consider a less than b return -1; } else { // common sense return a - b; } }, "customdatesort-desc": function(a, b) { if (a === false && b === false) { return 0; } else if (a === false) { return 1; } else if (b === false) { return -1; } else { return b - a; } } }); $(document).ready(function() { $('#hr_curriculum_interns').dataTable({ "aoColumns": [{ "sType": "customdatesort" }, null, null, null, null, null, null, null, null ] }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script src="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.0/jquery.dataTables.min.js"></script> <link rel="stylesheet" href="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.0/css/jquery.dataTables.css"> <div class="container"> <table id="hr_curriculum_interns" class="table table-striped"> <thead> <tr> <th>Age</th> <th>Position</th> <th>-</th> <th>-</th> <th>-</th> <th>-</th> <th>-</th> <th>-</th> <th>-</th> </tr> </thead> <tbody> <tr> <td>31/12/2015</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> </tr> <tr> <td>31/12/2014</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> </tr> <tr> <td></td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> </tr> <tr> <td>14/11/2014</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> </tr> <tr> <td>31/12/2013</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> <td>Athos</td> </tr> </tbody> </table> </div> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM