2011-11-18 50 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); 
}