Beløb med tusind tals separator og decimal
Hej,Jeg har ledt efter noget pænt javascript som kan tage et tal/beløb fra en TextBox og sørge for tusindtals separatorer samt kommatal.
Jeg har fundet nogle script men der har været fejl eller uhensigtsmæssigheder i dem jeg har afprøvet.
Det jeg skal bruge er:
input: 12345,67
Formatteret: 12.345,67
Og går man tilbage i feltet og ud igen skal det stadig virke.
Udvikler i ASP.NET. Hvor jeg kun må bruge så lidt javascript som muligt. Så kan ikke bruge jQuery og lign.
Har forsøgt med nedenstående kode.
Men der er en fejl. Første gang man forlader et felt er det korrekt. Men går man ind igen fejler tal større end 1000 pga. tusindtals separatoren.
F.eks. 12345.67 bliver først korrekt til 12,345.67. Men anden gang man går ind til 345.67.
Koden skal selvfølgelig laves om ift. dansk og amerikansk punktum/komma.
Nu er jeg ret ny til javascript, men jeg vil mene at der burde findes noget stabilt kode derude et sted :-)
function formatNumber (obj, decimal) {
//decimal - the number of decimals after the digit from 0 to 3
//-- Returns the passed number as a string in the xxx,xxx.xx format.
anynum=eval(obj.value);
divider =10;
switch(decimal){
case 0:
divider =1;
break;
case 1:
divider =10;
break;
case 2:
divider =100;
break;
default: //for 3 decimal places
divider =1000;
}
workNum=Math.abs((Math.round(anynum*divider)/divider));
workStr=""+workNum
if (workStr.indexOf(".")==-1){workStr+="."}
dStr=workStr.substr(0,workStr.indexOf("."));dNum=dStr-0
pStr=workStr.substr(workStr.indexOf("."))
while (pStr.length-1< decimal){pStr+="0"}
if(pStr =='.') pStr ='';
//--- Adds a comma in the thousands place.
if (dNum>=1000) {
dLen=dStr.length
dStr=parseInt(""+(dNum/1000))+","+dStr.substring(dLen-3,dLen)
}
//-- Adds a comma in the millions place.
if (dNum>=1000000) {
dLen=dStr.length
dStr=parseInt(""+(dNum/1000000))+","+dStr.substring(dLen-7,dLen)
}
retval = dStr + pStr
//-- Put numbers in parentheses if negative.
if (anynum<0) {retval="("+retval+")";}
//You could include a dollar sign in the return value.
//retval = "$"+retval
obj.value = retval;
}