2011-10-12 75 views
0

爲什麼這不顯示#total作爲小數? class =「total」中輸入的值是一個函數結果,它以2進制格式存儲該值。顯示行彙總的函數可以正常工作,但是當我使用下面的代碼在qty字段發生更改時累計行數,mat是正確的,並且更改正確發生,但是它的int形式不是貨幣格式(2個十進制地方)。我也嘗試過精確度,沒有改變。無法將結果數字格式化爲小數形式

$('[name^=qty]').change(function(){ 
    var sum = 0; 
    $('input.total').each(function() { 
     sum += $(this).val(); 
    }); 

    $('#total').val(sum).toFixed(2); 
    }); 

這裏是合計每行

function Tot(x,price,y) { 
var total = CurrencyFormatted(x*price); 
var v = document.getElementById(y); 
v.setAttribute('value',total);} 

所有這些功能都運行得很好,正確共計換代不如預期,與例外的總計字段中的小數位數的代碼。

下面是我使用的每一行的HTML,然後總

<td>$<input id="t1" disabled="disabled" size="8" value="0.00" class="total" /> 
... 
<input disabled="disabled" id="total" name="total" size="8" value="0.00" /> 

中沒有任何將改變號碼的格式無論是在類或表結構的CSS。我完全失去了,但希望有人會看到我沒有的東西。先謝謝你。

回答

2
$('input.total').each(function() { 
    sum += parseFloat($(this).val()); 
}); 

$('#total').val(sum.toFixed(2)); 

編輯,因爲我很忙我沒有解釋我的回答,格雷格·佩蒂特做到了,所以這裏的解釋

你試圖鏈toFixed()的東西,這不是一個數字。此外,你沒有將你的檢索值轉換爲浮點數。 JS可能已經處理了後者,但更好的通過parseFloat爲每個樣品運行它

+1

您試圖鏈接到固定()以非數字。此外,你沒有將你的檢索值轉換爲浮點數。 JS可能已經處理了後者,但更好的是按照樣本通過parseFloat運行它。 –

0

val返回String對象,而不是數字。您需要致電parseFloat或投至Number,然後致電toFixed(2)