Är ute efter ett skript som ändrar ett värde i ett INPUT-fält till decimaler (för valuta) i realtid, t.ex.: 1 = 1,00 eller 0,2 = 0,20 alltså 0 kronor och 20 öre. Hittade ett skript från Erik Juhlin här på forumet men vet inte hur jag ska göra för att få det att fungera (kan inte javascript, men använder det gärna).
Skriptet från Erik:
function round(number, numdecdig)
{
if (numdecdig == null) return number;
var n = Math.pow(10, numdecdig);
number = parseInt(number * n);
number = number / n;
return number;
}
alert(round(143325.545, 2));
Och min formulärs kod ser ut så här:
<FORM method="POST" name="f_valuta">
<INPUT type="text" name="f_valuta_data" value="" onChange=" -- här ska väl formulärsdatat skickas till skriptet, tror jag --"">
</FORM>
Funkar ju klockrent, nästan... Om man t.ex. skriver in 0,20 så formateras det till ,0 och samma sak händer på alla 0,xx värden. Och skriver man in t.ex 20,20 så blir det 20,00. Är det lät att fixa tro?
function FormatCurrency(e,c){
var n = Math.round(e*Math.pow(10,2))/Math.pow(10,2);
return ((n.toString().indexOf(".")==-1)?c+n+".00":(n.toString().substring(n.toString().indexOf(".")+1,n.toString().length).length)>1?c+n.toString():c+n.toString()+"0");
};
Som du använder så här:
alert(FormatCurrency(12.23, "SEK"));
Den andra parametern kan du skriva som "", "hej" eller vad som helst.
Så går det när man försöker sig på något utan att veta vad man pysslar med ;) .
Tänkte på en sak, måste inte input värdet vara i formatet xx.xx för att det skall fungera? Som jag har gjort har jag matat in värderna med formatet xx,xx vilket jag tror orsakar problem. Kan man ändra ett xx,xx värde till xx.xx i skriptet innan man formaterar om värdet? Skulle helst vilja ha det så då det som sagt är så det skrivs i databasen lite senare.
function FormatCurrency(e,c){
var n = Math.round(e*Math.pow(10,2))/Math.pow(10,2);
return ((n.toString().indexOf(".")==-1)?c+n+".00":(n.toString().substring(n.toString().indexOf(".")+1,n.toString().length).length)>1?c+n.toString():c+n.toString()+"0").replace(/[.]/g,",");
};
Mata t.ex. in värdet i formatet: 12.23 så byter skriptet ut alla "." mot ",".
Jag tänkte mig att , skulle bytas ut till punkt innan uträkningen sker, men det är ok, jag hittade detta skript på irt.org och det fungerade klockrent:
<SCRIPT LANGUAGE="JavaScript"><!--
function OutputPengar(Number) {
myNumber = parseFloat(Number.split(',').join('.'));
return OutputKronor(Math.floor(myNumber-0) + '') + OutputOre(myNumber - 0);
}
function OutputKronor(myNumber) {
if (myNumber.length <= 3)
return (myNumber == '' ? '0' : myNumber);
else {
var mod = myNumber.length%3;
var output = (mod == 0 ? '' : (myNumber.substring(0,mod)));
for (i=0 ; i < Math.floor(myNumber.length/3) ; i++) {
if ((mod ==0) && (i ==0))
output+= myNumber.substring(mod+3*i,mod+3*i+3);
else
output+= ',' + myNumber.substring(mod+3*i,mod+3*i+3);
}
return (output);
}
}
function OutputOre(amount) {
amount = Math.round( ( (amount) - Math.floor(amount) ) *100);
return (amount < 10 ? ',0' + amount : ',' + amount);
}
//--></SCRIPT>
<FORM method="POST" name="f_valuta">
<INPUT type="text" name="f_valuta_data" value="" onChange="this.value=OutputPengar(this.value);">
</FORM>
Men ett stort TACK till er båda för hjälpen ialla fall :) !
262 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849