2012-03-22 115 views
0

我使用的是在我有http://www.kryogenix.org/code/browser/sorttable/如何有空白单元格

一个发现问题sorttable.js脚本日期列排序是排序不工作在具有的混合我的日期列空单元格和日期。我的日期是“MM/DD/YYYY”格式。

从我所看到的,那种发生在这里的脚本:

sort_mmdd: function(a,b) { 
    mtch = a[0].match(sorttable.DATE_RE); 
    y = mtch[3]; d = mtch[2]; m = mtch[1]; 
    if (m.length == 1) m = '0'+m; 
    if (d.length == 1) d = '0'+d; 
    dt1 = y+m+d; 
    mtch = b[0].match(sorttable.DATE_RE); 
    y = mtch[3]; d = mtch[2]; m = mtch[1]; 
    if (m.length == 1) m = '0'+m; 
    if (d.length == 1) d = '0'+d; 
    dt2 = y+m+d; 
    if (dt1==dt2) return 0; 
    if (dt1<dt2) return -1; 
    return 1; 
    } 

我想不通的是如何使空白单元格要么去所有的顶部或底部当列上发生排序时。

关于如何去做这件事的任何想法?

回答

0

我想通了,如何让日期一起工作空白细胞(见下文)。

最终测试 “MTCH” 后来在使用它之前...

sort_mmdd: function(a,b) { 

    mtch = a[0].match(sorttable.DATE_RE); 

    if ((mtch == null) || (mtch == undefined)) { 
     y = 0; d = 0; m = 0; 
    } 
    else { 
     y = mtch[3]; d = mtch[2]; m = mtch[1]; 
    } 

    if (m.length == 1) m = '0'+m; 
    if (d.length == 1) d = '0'+d; 
    dt1 = y+m+d; 

    mtch = b[0].match(sorttable.DATE_RE); 

    if ((mtch == null) || (mtch == undefined)) { 
     y = 0; d = 0; m = 0; 
    } 
    else { 
     y = mtch[3]; d = mtch[2]; m = mtch[1]; 
    } 

    if (m.length == 1) m = '0'+m; 
    if (d.length == 1) d = '0'+d; 
    dt2 = y+m+d; 
    if (dt1==dt2) return 0; 
    if (dt1<dt2) return -1; 
    return 1; 
} 
1

嗯,你可以在没有匹配要么是遥远的将来或在遥远的过去返回数组...

mtch = a[0].match(sorttable.DATE_RE)|| ['nomatch','01','01','9000']; 
+0

+1 - 此感谢。这是正确的想法(也是有帮助的),但并不完全正确。我认为也许“a [0] .match ...”正在返回未定义......无论哪种方式,我想出了一个方法来做到这一点,并会在一会儿发布我的答案。随意评论一下它可能会有哪些改进。 – 2012-03-22 13:51:03

+0

刚刚检查出你的个人资料,发现你是一个男友 - 毕竟这是一个小世界!我看到你的名字是“肯尼贝克”,这对我来说似乎很可疑......我住在布伦瑞克,还没有去过Readfield呢...... – 2012-03-22 14:29:10

相关问题