Till Startsidan

Skaffa webbhotell?
Läs JavaScript.nu's jämförelse av webbhotell.
Med priser från
9 kr / månad.

Genom ett samarbete får alla JavaScript.nu-
besökare dessutom 100 kr i rabatt vid beställning.


Re: Tal till valuta med tusentalsavgräns

[ JavaScript.nu's Forum ] [ Viktigt om forumet ] [ JavaScript.nu's Startsida ]


Forum / Tal till valuta med tusentalsavgränsare
 Det koden

if(!(/^\d*,{0,1}\d+$/).test(v)){

gör är att verifiera att värdet är i formatet

(början)(ett godtyckligt antal siffror)(noll eller ett kommatecken)(minst en siffra)(slut)

och om det inte är det utföra en viss kod, i det här fallet

return "0,00 kr";

vilket sätter fältet till just "0,00 kr". Om du ändrar den raden till

return "";

får det istället effekten att alla ogiltiga värden får fältet att tömmas, vilket också är en helt rimlig sak att göra. (Även det tomma fältet - som ju är ogiltigt - kommer att tömmas, men detta ändrar ju inte dess värde.) Notera min kommentar "//?", som jag satte för att visa att du kunde ändra detta till något som passade för dig.

Varför har du förresten escapat citattecknena (" -> \")? Det borde inte behövas om du lägger functionen som ett externt script (inom <script>-taggar, eller med <script src="...">).

 
Hej igen!

Jag hittade en lösning c:a 3,7 sekunder efter att jag postade mitt förra inlägg.

Jag ändrade helt enkelt:

if(!(/^\d*,{0,1}\d+$/).test(v)){ //Felaktig indata
return \"0,00 kr\"; //?

till

if(!(/^\d*,{0,1}\d+$/).test(v)){ //Felaktig indata
return \"\"; //?

/Lars

 
Hej Simon och tack så mycket för hjälpen!

Om man ska tillåta ett tomt fält hur modifierar
man ditt script då?

Jag har provat men får inte till det riktigt.
Gissar att det är här man ska trixa lite:

if(!(/^\d*,{0,1}\d+$/).test(v)){

Vad exakt gör ovanstående?

Med vänliga hälsningar
Lars Lantz

 
Den här funktionen tror jag borde fungera:

function formatCurrency(v){
v=v.replace(/\./g,','); //Tillåt punkter som kommatecken (engelskans syntax), tex 12.5 -> 12,5
v=v.replace(/ /g,''); //Ignorera mellanslag, tex godkänns " 5 4 , 0 " (54) och "1 200" (1200)
if(v.substr(-2)=="kr"){ //Godkänn att ett tal slutar med kr.
v=v.substr(0,v.length-2);
}
if(!(/^\d*,{0,1}\d+$/).test(v)){ //Felaktig indata
return "0,00 kr"; //?
}
var p=v.split(',');
if(p[0]==''){ //Godkänn inte engelsk syntax som ",50"
return "0,00 kr"; //?
}
if(p.length==1){
p.push('0');
}
var nor=Math.round(100*((p[0]-0)+(('0.'+p[1])-0)));
var ipart=Math.floor(nor/100), dstr=(nor%100)+'';
if(dstr.length==1)dstr+='0';
var istr='', ap;
while(ipart>=1000){ //Ändra while till if om du bara vill ha tusenavgränsare, inte också miljon-, miljard-, etc. som det är just nu
ap=(ipart%1000)+'';
ap=('000').substr(ap.length)+ap;
istr=' '+ap+istr;
ipart=Math.floor(ipart/1000);
}
istr=ipart+istr;
var res=istr+','+dstr+' kr';
return res;
}

Du får naturligtvis ändra vissa detaljer till hur du vill ha det. Anropa den som
onchange="var f=document.getElementById('resmal_pris');f.value=formatCurrency(f.value);"

Simon

 
Hej!

Jag har ett litet javascriptproblem.

Efter att man knackat in priset ex. 2400 och lämnar inputen så ska ett litet script ändra
texten i inputen till 2 400,00 kr.

Fler ex. inknackat 1200,50 ska bli 1 200,50 kr

En liten början kan kanske se ut så här:

onchange="document.getElementById(\'resmal_pris\').value=??????;"

/Lars


Postat av Simon (213.89.66.60) den 14 Juni, 2010 kl 18:10:40.
Som svar på: Re: Tal till valuta med tusentalsavgräns postat av Lars Lantz den 13 Juni, 2010 kl 18:48:35.


Svar på inlägget:


Posta ett svar:

Namn:
E-Mail:
Rubrik:
Meddelande:
Ja tack, maila mig om andra svarar på detta inlägg.
Ja tack, maila mig om andra svarar på mitt inlägg.


[ JavaScript.nu's Forum ] [ Viktigt om forumet ] [ JavaScript.nu's Startsida ]






Copyright © Omid Rouhani 1997-2022; Alla rättigheter reserverade.
Guider: [ HTML guide ] - [ JavaScript guide ] - [ DHTML guide ] - [ Perl guide ] - [ Sitemap ]