2013-08-22 45 views
2

在我的jQuery程序中,我有3個文本框。一個用於net weight,一個用於rate,最後一個用於amount的只讀文本框。數量文本框計算速率和netweight文本框的乘積並顯示結果。文本框不顯示十進制值jQuery

function amtcal(id) 
{  
    var ab="#a"+id; 
    var ntwt=parseInt($(ab).val(),10); 
    var a="#"+id; 
    var rval=parseInt($(a).val(),10); 
    var product=rval*ntwt; 
    var abc="#aa"+id; 
    $(abc).val(product); 
}  

查看working example at jsFiddle

該程序正在工作,但它造成的錯誤是它忽略了小數值。如果我輸入以下內容: - Nt wt = 5.5 | Rate = 5.2,輸出爲25

+1

不要使用parseInt函數將文本轉換爲數字,除非你想真正的結果是整數。 – 2013-08-22 12:34:06

+0

大聲笑...謝謝@Jeffman – h2O

+0

@Jeffman,讓它成爲答案,以便我可以將它作爲最好的答案......足夠公平的 – h2O

回答

3

請勿使用parseInt將文本轉換爲數字,除非您確實需要的結果是整數。 parseFloatNumber將在這裏完成這項工作。 )

1

您正在使用parseInt將刪除所有十進制值(使其成爲一個整數),使用parseFloat而不是它將保留它(因此使它成爲一個浮點數)。

+0

我從@Jeffman得到了答案。我刪除了parseInt,答案很完美。 – h2O

1

使用此JS:

function amtcal(id) 
{  
    var ab="#a"+id; 
    var ntwt=parseFloat($(ab).val()); 
    var a="#"+id; 
    var rval=parseFloat($(a).val()); 
    var product=rval*ntwt; 
    var abc="#aa"+id; 
    $(abc).val(parseFloat(product).toFixed(2)); 
} 

.toFixed()這裏是用來顯示小數點後2位數字。

-1

我已更新jQuery代碼並在jsfiddle中更新。 這是更新的jQuery。

function amtcal(id){ 
    var ab="#a"+id; 
    var ntwt=$(ab).val(); 
    var a="#"+id; 
    var rval=$(a).val(); 
    var product=rval*ntwt; 
    var abc="#aa"+id; 
    $(abc).val(product); 
} 
2

只是刪除parseInt函數,並讓它成爲rval=$(a).val();

+0

雖然在這種情況下可以使用,但如果還涉及添加,它可能會導致後續的潛在錯誤。明確地將該值轉換爲數字是最安全的方法。 –