jquery - 数据表...排序不适用于数字逗号...为什么?

标签 jquery sorting datatables numbers

我将 jquery 数据表与 server_processing 一起使用。 这让我想起了数据表中的 server_processing 带有小数点“,”分隔符的数字(或单词?)。

$ inter = trim ($ aRow ['carat']);
$ row [] = number_format ($ inter, 2, ',', '');

当我点击上升和下降箭头时, 排序不会发生在数字方法中,而是发生在方法文本中。 前任。 10.01> 9.99(数字)

如何让它与我的号码配合使用?

最佳答案

在 JavaScript 中,只有点作为小数点分隔符有效。由于 DataTables 使用 JavaScript 对列值进行排序,因此它会将带有逗号分隔符的数字视为字符串。然而,这个问题可以通过排序插件轻松解决。

jQuery.extend(jQuery.fn.dataTableExt.oSort, {
    "numeric-comma-pre": function (a) {
        // prepare number
        a = +(a.replace(",", "."));
        a = (isNaN(a)) ? Number.MAX_VALUE : a;
        return a;
    },
    "numeric-comma-asc": function (a, b) {
        return ((a < b) ? -1 : ((a > b) ? 1 : 0));
    },
    "numeric-comma-desc": function (a, b) {
        return ((a < b) ? 1 : ((a > b) ? -1 : 0));
    }
});

前面的代码块定义了一个新的数据类型,供 DataTables 用于对列进行排序。此代码改编自 DataTables official site 中的示例。 .

插件对象中的第一个函数是将单元格值转换为数字,以便可以通过以下函数对其进行排序。在这种情况下,我遵循了 this post 的建议,并使用一元运算符将值转换为数字。如果该值不是数字,则返回 NaN,我将其更改为 Number.MAX_VALUE。我这样做是因为我选择在升序排序时最后移动无效数字。

之后,只需创建数据表,并为我们想要的列定义新的数据类型。

jQuery("#myTable").dataTable( {
    "aoColumnDefs": [
        { "sType": "numeric-comma", "aTargets": [2,3] }
    ]
});

假设第三列和第四列有逗号分隔的数字,它们现在必须正确排序。

关于jquery - 数据表...排序不适用于数字逗号...为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15387120/

相关文章:

jquery - 如何使用jquery加载jquery对话框后在下拉列表中设置一些文本

javascript - jQuery Autosize - 使用回调

javascript - 获取随机的 n 个元素数组并将它们插入到指定元素中

sorting - 当我们谈论排序时,什么是自然排序?

javascript - Azure 数据表 JS SDK - 如何设置请求 header - contentType : application/json;odata=nometadata

asp.net - 在 ASP.NET MVC 3 中获取 ContentType

javascript - 将粗体类添加到包含新消息的父类

sorting - Pandas 排序并保持索引不变

javascript - 省略数据表中的列的通用解决方案

javascript - 当初始化用于多个表时,如何获取当前表id以添加到ajax数据中?