jquery datatable排序插件根本不工作

时间:2014-05-05 12:48:04

标签: javascript jquery datatable datatables

我正在使用jquery datatable sort插件来对货币进行排序。但是这个插件都没有为我工作。

列中的数据类型为:

$5,871
$385.58
$430
$1,308.60

如果列中没有','且没有“$”,则排序正常。其他明智的排序并不像预期的那样。

示例:排序输出我得到(当排序desc时)

$890.54
$5.49
$5,871
$2,548.50

输出应该是:

$5,871
$2,548.50
$890.54
$5.49

我尝试过:数字逗号,货币,标题数字排序来对这些值进行排序。

如果我删除$和,则从这些值中对它们进行正确排序。

尝试:

  1. http://datatables.net/plug-ins/sorting/title-numeric
  2. http://datatables.net/plug-ins/sorting/formatted-numbers
  3. http://datatables.net/plug-ins/sorting/numeric-comma
  4. 排序输出总是与上面相同:

    还有一个问题的调整:

    对于我们没有任何货币的列,它表示为“---”

    实施例

    $5,871
    $2,548.50
    $890.54
    ---
    ---
    $5.49
    

2 个答案:

答案 0 :(得分:1)

为什么不建立自己的扩展,它非常简单

jQuery.extend(jQuery.fn.dataTableExt.oSort, {
            "currency-pre": function(a) {
            //EDIT: To Accommodate for the "---" columns, use this
                return a.indexOf('--') > -1 ? -1 : a.replace(/\$|,/g, '').trim();
            },
            "currency-asc": function(a, b) {
                return ((a < b) ? -1 : ((a > b) ? 1 : 0));
            },
            "currency-desc": function(a, b) {
                return ((a < b) ? 1 : ((a > b) ? -1 : 0));
            });

然后确保设置&#39; s&#39;到货币&#39;

答案 1 :(得分:1)

使用以下代码。它应该与&#39; $&#39;标志也是。您不需要删除$ sign。

 jQuery.extend(jQuery.fn.dataTableExt.oSort, {
            "currency-pre": function (a) {
                a = (a === "-") ? 0 : a.replace(/[^\d\-\.]/g, "");
                return parseFloat(a);
            },
            "currency-asc": function (a, b) {

                return a - b;
            },
            "currency-desc": function (a, b) {

                return b - a;
            }
    });

// Initialize datatable

$('#datatableID').dataTable({
            'aoColumns': [
                            { 'sType': 'currency' }],