Jag skäms för att jag bombaderar Er med mitt beställningsformulärsfråga!!
Om jag använder mig av denna beräkning och så summerar den inte rätt om jag använder mig av kommadecimal i stället för punkt. Dvs 2*1,6=2 istället för t.ex 2*1.6=3.2.
Jag fick hjälp i en tidigare tråd att ersätta en punkt till ett komma och detta går bra och jag får då resultatsidan som skickas som mail att bli rätt. Så egentligen så är det att denna function skall addera om jag har komma-decimal så skulle allt bli bra! Går det även att få med 2 decimaler så hade det varit kanonbra!
<script language="javascript" type="text/javascript">
function addera()
{
var elms = document.forms["form1"].elements;
if ( !elms )
return false;
var momsfaktor = 1.25;
var momsfaktor2 = 0.25;
var totsum = 0.0;
var i = 1;
var obj = null;
while ( elms["antal"+i] && elms["pris"+i] )
{
var delsum = parseFloat( elms["antal"+i].value, 10 ) * parseFloat( elms["pris"+i].value, 10 );
if ( isNaN( delsum ) )
delsum = 0;
obj = document.getElementById( "delsum"+i );
if ( obj )
obj.innerHTML = delsum;
obj = document.getElementById( "delsum_moms"+i );
if ( obj )
obj.innerHTML = delsum * momsfaktor;
totsum += delsum;
i++;
}
if ( elms["totalpris"] )
elms["totalpris"].value = totsum;
if ( elms["totalpris_moms"] )
elms["totalpris_moms"].value = totsum * momsfaktor;
if ( elms["moms"] )
elms["moms"].value = totsum * momsfaktor2;
obj = document.getElementById( "totsum" );
if ( obj )
obj.innerHTML = totsum;
obj = document.getElementById( "totsum_moms" );
if ( obj )
obj.innerHTML = totsum * momsfaktor;
obj = document.getElementById( "tot_moms" );
if ( obj )
obj.innerHTML = totsum * momsfaktor2;
return true;
}
</script>
Om decimaltalen i forumläret skrivs med kommatecken får du först omvandla dessa i funktionen, utföra beräkningarna, omvandla tillbaka och därefter skriva till inputrutorna.
Så här kan du göra:
String.prototype.make_decimal = function(){
var s = this.replace(/,/g, '.');
if (isNaN(s)) return null;
return s;
}
function addera(){
var elms = document.forms["form1"].elements;
// Deklarera variabler för inputelementen, t ex
var antal1 = elms["antal1"];
.
.
.
// Omvandla till punktform och undersök huruvida formatet är giltigt
var val;
if ((val = antal1.value.make_decimal()) == null) alert("Ej giltigt format!");
.
.
.
// Utför beräkningar
var totsum = [i]x[/i] + [i]y[/i];
// Skriv tillbaka
document.getElementById("totsum").innerHTML = (totsum + "").replace(/\./g, ',');
}
256 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91