2011-11-18 56 views
3

我有一個JavaScript函數,得到的形式從文本字段的三個值,對其求和,並在窗體顯示的總和:Javascript國際計算?

function sumVals(theForm) { 
    var sum = 0.0; 
    sum += parseFloat(theForm.val01.value); 
    sum += parseFloat(theForm.val02.value); 
    sum += parseFloat(theForm.val03.value); 
    theForm.sumvals.value = sum.toNiceFixed(4); 
} 

功能正常工作的任何計算機上以英文操作系統。例如,如果爲表單中的val01,val02和val03輸入值0.2,0.4和0.4,則和數字段顯示1.000

但是,在具有意大利或德國操作系統的計算機上,如果我輸入val01,val02和val03的形式相同,值爲0.2,0.4和0.4,求和字段顯示10000.000

我認爲這與某些非英語操作系統的解釋時間段和逗號數字。但是,如果我在文本字段中輸入值時嘗試替換逗號(例如0,4),那麼只要我將焦點從焦點移開,字段就會切換爲0。

我已經簽出了一堆處理國際化域名的JavaScript網站,但我找不到任何處理這個具體問題,或者至少我沒有認識到這一點。

任何人都可以幫助我一個解決方法,可以輕鬆解釋操作系統的本地語言的JavaScript變量(如果真的是這個問題)?

+1

爲什麼你會在不同的文化中有相同的數字格式?瀏覽器應該如何猜測在特定數字下你的意思是什麼?德文數字格式是0.4(逗號作爲分隔符) –

+3

我不認爲'toNiceFixed'方法是標準的。它是你正在使用的一些圖書館的一部分嗎?你可以通過打印到控制檯來檢查'sum'是否正確計算出來嗎? – hugomg

回答

1
function toFloat(value) { 
    return parseFloat(value.replace(',','.')); 
} 
function sumVals(theForm) { 
    var sum = 0.0; 
    sum += toFloat(theForm.val01.value); 
    sum += toFloat(theForm.val02.value); 
    sum += toFloat(theForm.val03.value); 
    theForm.sumvals.value = sum.toNiceFixed(4); 
}