jquery排序不适用于值为$ -symbol的列

时间:2016-02-11 11:08:19

标签: jquery

我正在使用列排序选项 以下链接有代码

https://jsfiddle.net/9mobgu8h/12/

我试过这个下面的代码,但没有得到解决方案,排序已完成,但没有按正确的顺序     str1 = str1.replace(“$”,“”);     str2 = str2.replace(“$”,“”);

jQuery.extend(jQuery.fn.dataTableExt.oSort, {
"non-empty-string-asc": function(str1, str2) {
    str1 = str1.replace("$", "");
    str2 = str2.replace("$", "");
    if ( str1 == null || str1 == "" || str1 == 0)
        return 1;
    if ( str2 == null || str2 == "" || str2 == 0)
        return -1;
    return ((parseInt(str1) < parseInt(str2)) ? -1 : ((parseInt(str1) > parseInt(str2)) ? 1 : 0));
},

"non-empty-string-desc": function(str1, str2) {
    str1 = str1.replace("$", "");
    str2 = str2.replace("$", "");
    console.log
    if ( str1 == null || str1 == "" || str1 == 0)
        return 1;
    if ( str2 == null || str2 == "" || str2 == 0)
        return -1;
    return ((parseInt(str1) < parseInt(str2)) ? 1 : ((parseInt(str1) > parseInt(str2)) ? -1 : 0));
}
});

第二列的值为$ -symbol这个列的排序不符合asc的正确顺序,desc请帮我解决这个问题

2 个答案:

答案 0 :(得分:0)

您可以检查它们是否为数字,如果是,您可以在排序前将它们转换为数字

str1 = str1.replace("$", ""); 
str2 = str2.replace("$", "");
if (!isNaN(str1) && !isNaN(str1)) {
   str1 = Number(str1);
   str2 = Number(str2);
}

UPDATED FIDDLE

答案 1 :(得分:0)

    str1 = str1.replace('$','').replace(/,/g,'');
    str2 = str2.replace('$','').replace(/,/g,'');

在上面的代码帮助下,排序对于asc,desc

工作正常