2013-04-07 124 views
1

我正在使用sumtr來總結一列,但我希望能夠從一個列的格式化爲貨幣計算總和。sumtr on格式化爲貨幣

$('#Cart').sumtr({ 
    readValue: function (e) { return Number(parseFloat(e.data('val')) 
          .replace(/[^0-9\.]+/g, "")); }, 
    formatValue: function (val) { return formatCurrency(val); } 
}); 

如果我刪除readValue上方,然後代碼工作正常,但合計起來是沒有貨幣符號列;我正在使用formatCurrency()方法顯示用貨幣符號格式化的總數。
但是,如果列(帶有「總和」類)已用貨幣格式化,則sumtr不適用於這些值。所以我試圖讓readValue函數去掉除了Numbers之外的任何東西,但是沒有返回。

這是表sumtr的一部分正在

<tr> 
    <td>Adrobupicator</td> 
    <td class="currency">&#163;700.01</td> 
    <td>1</td> 
    <td class="sum currency">700.01</td> 
</tr> 
<tr> 
    <td>A1 Product 2</td> 
    <td class="currency">&#163;36.28</td> 
    <td>1</td> 
    <td class="sum currency">36.28</td> 
</tr> 
<tfoot> 
    <tr class="summary"> 
     <td colspan="3">Cart Total</td> 
     <td class="currency"></td> 
    </tr> 
</tfoot> 

回答

1

如果你正在使用e.data('val'),它意味着你有關於這一點我不認爲你已經完成了TD設置SOEM數據瓦爾斯?

所以,你既可以解析HTML TD像這樣:

$('#myTable').sumtr({ 
    readValue : function(e) { return parseFloat(e.html().replace(/[^0-9\.]+/g, "")); }, 
    formatValue : function(val) { return '$' + val; }, 
}); 

或者您可以使用e.data('val')如果您已設置的數據。那麼你甚至不需要正則表達式。無論是使用的數據屬性:

<tr> 
    <td class="currency" data-val="700.01">&#163;700.01</td> 
</tr> 

或設置數據明確地使用jQuery:

$("#yourtd").data("val", 700.01);