jQuery Tablesorter中的ipAddress分类器问题

ipAddress sorter issue in jQuery Tablesorter

本文关键字:分类器 问题 ipAddress 中的 Tablesorter jQuery      更新时间:2023-09-26

所以我在表中添加了jQuery(最新)表分类器,除了包含ip地址(ipv4)的列之外,每一列都能完美工作。它对其中的大部分进行了分类,但忽略了其他一些。

如果我错了,请纠正我,但在这种情况下不需要解析器,对吧?关于如何解决这个问题有什么想法吗?

感谢

对于具有任何个位数级别的IP地址(例如,123.45.6.78中的6),表分类器中的ipAddress解析器已损坏。

这是股票代码:

ts.addParser({
    id: "ipAddress",
    is: function (s) {
        return /^'d{2,3}['.]'d{2,3}['.]'d{2,3}['.]'d{2,3}$/.test(s);
    }, format: function (s) {
        var a = s.split("."),
            r = "",
            l = a.length;
        for (var i = 0; i < l; i++) {
            var item = a[i];
            if (item.length == 2) {
                r += "0" + item;
            } else {
                r += item;
            }
        }
        return $.tablesorter.formatFloat(r);
    }, type: "numeric"
});

这是一个更正的版本:

ts.addParser({
    id: "ipAddress",
    is: function (s) {
        return /^'d{1,3}['.]'d{1,3}['.]'d{1,3}['.]'d{1,3}$/.test(s);  /* CHANGED */
    }, format: function (s) {
        var a = s.split("."),
            r = "",
            l = a.length;
        for (var i = 0; i < l; i++) {
            var item = a[i];
            if (item.length == 1) {                 /* NEW */
                r += "00" + item;                   /* NEW */
            } else if (item.length == 2) {          /* CHANGED */
                r += "0" + item;
            } else {
                r += item;
            }
        }
        return $.tablesorter.formatFloat(r);
    }, type: "numeric"
});

您使用的是原始的表分类器(v2.0.5)还是我的表分类器分支?

原始版本包含一个ipAddress解析器作为默认解析器之一,因此只要ipAddress的格式正确,它就应该可以工作。

另一方面,表分类器的分叉版本不再在表分类器核心中包含ipAddress解析器。它被移到一个单独的文件(parser-network.js)中,并重命名为"ipv4Address"("ipAddress"仍然适用于向后兼容性)。取而代之的是图像解析器。

这里有一个演示显示ipv4,ipv6和MAC地址排序。