2013-03-06 30 views
0

我有一個表格,輸出一個輸入字段和下拉計算。使用toFixed在正確的地方

除了總計,劇本還不錯。當你輸入一個數字並從下拉菜單中選擇一個數值時,總數將被四捨五入至小數點後兩位。

任何人都可以看到爲什麼會發生這種情況嗎?

形式是以下:

<input type="text" name="amount" id="amount" maxlength="6" autocomplete="off"/><span class="paymentalert" style="color:red;"></span> 
<br /><br /> 
<label for="delivery">Delivery:</label> 
<select id="delivery" name="delivery"> 
    <option value="1.50">Fast</option> 
    <option value="2.50">Medium</option> 
    <option value="3.50">Slow</option> 
</select> 

的JavaScript是以下:

function updateCost() 
{ 
    var amount = parseFloat($('#amount').val()).toFixed(2); 
    var delivery = parseFloat($('#delivery').val()).toFixed(2); 

    var total = parseFloat(amount) + parseFloat(delivery); 
    $("#total").html(total); 
    $("#amountdiv").html(amount); 
    $("#deliverydiv").html(delivery); 

    var fixedrate = parseFloat(total/100 * 8.2).toFixed(2); 

    var grandtotal = parseFloat(fixedrate) + parseFloat(total); 
    $("#grandtotal").html(grandtotal); 
    $("#total").html(total); 
    $("#fixedrate").html(fixedrate);  

} 

$(document).ready(function(){ 
    $('#amount').change(function(){ updateCost(); }); 
    $('#delivery').change(function(){ updateCost(); }); 
    $('#grandtotal').change(function(){ updateCost(); }); 
}); 
+0

總計*不*必須舍入到小數點後兩位嗎? – 2013-03-06 22:31:27

+0

它不計算到小數點後兩位。例如,當我輸入40.76,然後選擇1.50或3.50時,它精確到小數點後兩位。當我選擇2.50時,小數點位置超過運行。奇怪的 – Jonah 2013-03-06 22:52:23

回答

3

toFixed(2)應僅在該輸出它的代碼的部分來使用。在這種情況下,您應該構建如$("#someID").html(total.toFixed(2)),並刪除多餘的parseFloat()。這樣的事情:

function updateCost() { 
    var amount = parseFloat(document.getElementById("amount").value), 
     delivery = parseFloat(document.getElementById("delivery").value), 
     total = amount + delivery, 
     fixedrate = total/100 * 8.2, 
     grandtotal = fixedrate + total; 

    document.getElementById("total").innerHTML = total.toFixed(2); 
    document.getElementById("amountdiv").innerHTML = amount.toFixed(2); 
    document.getElementById("deliverydiv").innerHTML = delivery.toFixed(2); 
    document.getElementById("grandtotal").innerHTML = grandtotal.toFixed(2); 
    document.getElementById("fixedrate").innerHTML = fixedrate.toFixed(2); 
} 

$(function(){ 
    document.getElementById("amount").onchange = 
     document.getElementById("delivery").onchange = updateCost; 
}); 
+0

哇..謝謝。你確實簡化了我的工作。優秀。另外我學到了。 – Jonah 2013-03-07 08:46:54