不考虑tablesorter上的R符号

时间:2015-03-26 21:52:28

标签: javascript html tablesorter

我有一个html表,我试图使用tablesorter排序(我相信我有最新的版本)。问题是当我对某些列进行排序时,结果排序不符合要求。具体来说,我列中的每个数字都有一个" R"字符是它的前面(南非兰特的简称),当我对列进行排序时,它只对第一个数字进行排序,而不是全部。例如。 R100出现在R70之前。我的HTML看起来像这样:

    <div class="table-responsive container-fluid">
    <table id="BrokerTable" class="table table-bordered table-hover tablesorter">
    <thead>
        <tr>
            <th class="col-md-2">Broker<span class="glyphicon glyphicon-chevron-down headimage"></span></th>
            <th class="col-md-2">Base Transaction Fee<br> (per trade)<span class="glyphicon glyphicon-chevron-down headimage"></span></th>      
            <th class="col-md-2">Minimum Transaction Fee<br> (per trade)<span class="glyphicon glyphicon-chevron-down headimage"></span></th>
            <th class="col-md-2">Monthly Management Fee<br> (exc. VAT)<span class="glyphicon glyphicon-chevron-down headimage"></span></th>
            <th class="col-md-2">Allows limit orders<br> (required for placing orders outside of trading hours)<span class="glyphicon glyphicon-chevron-down headimage"></span></th>
            <th class="col-md-2">Allows stop-loss orders<span class="glyphicon glyphicon-chevron-down headimage"></span></th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><p>28E Capital</p></td>
            <td><p>0.7% : R0-R49,999<br>0.5% : R50,000-R499,999<br>0.4% : R500,000-R999,999<br>0.35% : R1,000,000+</p></td>
            <td><p>R125</p></td>
            <td><p>R40</p></td>
            <td><p><b class="greenTick">&#x2713;</b></p></td>
            <td><p><b class="greenTick">&#x2713;</b></p></td>
        </tr>
        <tr>
            <td><p>ABSA</p></td>
            <td><p>0.4%</p></td>
            <td><p>R120</p></td>
            <td><p>R67</p></td>
            <td><p><b class="greenTick">&#x2713;</b></p></td>
            <td><p><b class="redcross">&#x2718;</b></p></td>
        </tr>
        <tr>
            <td><p>AfriFocus</p></td>
            <td><p>0.5%</p></td>
            <td><p>R125</p></td>
            <td><p>R65</p></td>
            <td><p><b class="greenTick">&#x2713;</b></p></td>
            <td><p><b class="greenTick">&#x2713;</b></p></td>
        </tr>
    </tbody>
    </table>

我的tableorter js是:

    <script>
    $(document).ready(function() {
    $("#BrokerTable").tablesorter( {sortList: [[1,0]]} ); 
        } 
    ); 
</script>

如果有人知道如何完成这项工作,那就太棒了。

杰克

2 个答案:

答案 0 :(得分:0)

Tablesorter API支持使用自定义方法提取文本以进行排序。试试这个:

var removeLeadingR = function(node) {
    var text = $(node).text();
    return text[0] === 'R' : text.substring(1) : text; 
}

$(document).ready(function() {
    $("#BrokerTable").tablesorter( {sortList: [[1,0]], textExtraction: removeLeadingR } ); 
});

答案 1 :(得分:0)

我认为实际问题是原始tablesorter(v2.0.5)不执行字母数字排序。

我做了一个fork of tablesorter,有很多改进。它确实执行字母数字排序。

我创建了a demo from the HTML you provided,但它没有R100或R70,所以我添加了它们......

$(function () {
    $("#BrokerTable").tablesorter({
        sortList: [[1,0]],
        theme: 'blue'
    });
});