Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有记帐编号格式的jquery表排序器_Jquery - Fatal编程技术网

具有记帐编号格式的jquery表排序器

具有记帐编号格式的jquery表排序器,jquery,Jquery,我正在使用jquery tablesorter,并尝试对具有类似以下值的列进行排序: 100000美元 $38,000 ($4,000) 2000美元 ()中的数据是负数。使用默认排序功能时,它不会将($4000)识别为负数,因此我尝试创建一个自定义函数来处理这个问题 下面的解决方案就是我提出的,而且效果很好。但我想知道是否有更好的解决办法?我是jquery新手,只是想了解一些情况 $(document).ready(function() { $.tablesorte

我正在使用jquery tablesorter,并尝试对具有类似以下值的列进行排序:

100000美元 $38,000 ($4,000) 2000美元

()中的数据是负数。使用默认排序功能时,它不会将($4000)识别为负数,因此我尝试创建一个自定义函数来处理这个问题

下面的解决方案就是我提出的,而且效果很好。但我想知道是否有更好的解决办法?我是jquery新手,只是想了解一些情况

$(document).ready(function() 
    { 
        $.tablesorter.addParser({
                // set a unique id
                id: 'currency-column',
                is: function(s) {
                        // return false so this parser is not auto detected
                        return false;
                },
                format: function(s) {
                         s = s.replace(/$/g,"");
                         s = s.replace(/\(/g,"-");
                         s = s.replace(/\)/g,"");
                         return $.tablesorter.formatFloat(s.replace(new RegExp(/[^0-9.-]/g),""));
                },

                type: 'numeric'
        });

        $("#myTable").tablesorter({
            headers: {
                3: { sorter:'currency-column' },
                4: { sorter:'currency-column' },
                5: { sorter:'currency-column' },
                6: { sorter:'currency-column' },
                7: { sorter: false },
                10: { sorter:'currency-column' }
            }
        }); 

    } 
);
同样,它做了需要的事情,我对结果很满意(也许我应该把它留在那里…),但是如果有更好的解决方案,我很乐意听到

谢谢

如何删除“,”

因此,您的功能变成:

format: function(s) {
         s = s.replace(/$/g,"");
         s = s.replace(/\(/g,"-");
         s = s.replace(/\)/g,"");
         s = s.replace(/,/g,"");
         return $.tablesorter.formatFloat(s.replace(new RegExp(/[^0-9.-]/g),""));
},

^.^

您使用的方式没有问题,我进行了搜索。我找到的唯一替代方法是使用一个隐藏列,其中未格式化的值作为浮点值,并按该列排序
format: function(s) {
         s = s.replace(/$/g,"");
         s = s.replace(/\(/g,"-");
         s = s.replace(/\)/g,"");
         s = s.replace(/,/g,"");
         return $.tablesorter.formatFloat(s.replace(new RegExp(/[^0-9.-]/g),""));
},