Avatar billede nordclc Nybegynder
13. juni 2005 - 13:09 Der er 8 kommentarer og
1 løsning

Sammentælling af varelinier - varebestilling

Hej Eksperter,

jeg skal lave en bestillingsside, hvorpå der listes x-antal varer til forskellige priser. For hver varelinie skal der være et input felt til indtastning af det antal man ønsker at bestille.

Opgaven er så:

1. Løbende med at man indtaster antal, skal der beregnes en sum i et total felt.
2. Der skal trækkes en rabat procent fra summen
3. Er summen mindre end 500 kr. så skal der lægges et gebyr på 50 kr. oven i

Du behøver ikke skrive alt koden, blot funktionen til selve beregningen, samt hvornår den skal "fyre" på f.eks. onchange?

Mvh
Nordclc
Avatar billede roenving Novice
14. juni 2005 - 15:00 #1
Havde desværre ikke et link, så du får lige html-dokumentet in extenso:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Bestillingsformular</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">

</style>
<script language="javascript" type="text/javascript">
numFields = 3;
function beregn(fld){
    if(!fld.value.match(/^\d+\.?\d*$/)){
        alert('Ugyldigt antal angivet');
        fld.value = fld.defaultValue;
        return false;
    }
   
    var num = fld.name.substring(5);
    var p = document.getElementById("Pris"+num).value;
    var s = document.getElementById("Sum"+num);
    var ialt = document.getElementById("Ialt0");
    var ialt1 = document.getElementById("Ialt1");
    var pris = p;
    if(p.indexOf(",-")>-1){
        pris = p.substring(0,p.indexOf(",-"));
    }else{
        komma = p.indexOf(",")
        if(p.indexOf(",")>0){
            pris = (p.substring(0,komma)+"."+p.substring(komma+1));
        }
    }
    pris = +pris;
    var sum = pris*fld.value;
    s.value = formatNum(sum);
    sum = 0;
    for(i=1;numFields+1>i;i++){
        sum += +document.getElementById("Sum"+i).value
    }
    ialt.value = formatNum(sum);
    ialt1.value = formatNum(sum*1.25);
}

function formatNum(t){
    if((""+t).length>(""+t).indexOf(".")+3)t=(Math.round(t*100))/100;
    if((""+t).indexOf(".")==-1)t=t+".00";
    if((""+t).indexOf(".")+2==(""+t).length)t=t+"0";
    return t;
}
</script>
</head>

<body>
<br>
<form id="minForm" name="minForm" action="http://www.eksperten.dk" method="post" onsubmit="alert('Bestillingen bliver nu sendt !-)');return false">
<table border="1" cellpadding="0" cellspacing="0">
<tr>
    <td>
        <input id="Antal1" name="Antal1" type="text" value="Indtast antal" onchange="beregn(this);" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20"></td>
    <td align="right">
        <input id="Pris1" name="Pris1" type="text" value="100" size="20" disabled style="text-align:right;">&nbsp;</td>
    <td>
        <input id="Sum1" name="Sum1" type="text" value="" disabled size="20" style="text-align:right;">&nbsp;</td>
</tr>
<tr>
    <td>
        <input id="Antal2" name="Antal2" type="text" value="Indtast antal" onchange="beregn(this);" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20"></td>
    <td align="right">
        <input id="Pris2" name="Pris2" type="text" value="25,-" size="20" disabled style="text-align:right;">&nbsp;</td>
    <td>
        <input id="Sum2" name="Sum2" type="text" value="" disabled size="20" style="text-align:right;">&nbsp;</td>
</tr>
<tr>
    <td>
        <input id="Antal3" name="Antal3" type="text" value="Indtast antal" onchange="beregn(this);" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20"></td>
    <td align="right">
        <input id="Pris3" name="Pris3" type="text" value="93,75" size="20" disabled style="text-align:right;">&nbsp;</td>
    <td>
        <input id="Sum3" name="Sum3" type="text" value="" disabled size="20" style="text-align:right;">&nbsp;</td>
</tr>
<tr>
    <td colspan="2" align="right">
        Pris ekskl. moms:&nbsp;</td>
    <td>
        <input id="ialt0" name="ialt0" type="text" value="" disabled size="20" style="text-align:right;">&nbsp;</td>
</tr>
<tr>
    <td colspan="2" align="right">
        Samlet pris inkl. moms:&nbsp;</td>
    <td>
        <input id="ialt1" name="ialt1" type="text" value="" disabled size="20" style="text-align:right;">&nbsp;</td>
</tr>
<tr>
    <td colspan="3">
        <input type="submit" value="Send bestilling" size="20"></td>
</tr>
</table>       
</form>
</body>

</html>
Avatar billede nordclc Nybegynder
16. juni 2005 - 12:59 #2
Det prøver jeg af og tilretter i morgen, så send et svar i mellemtiden.

Mvh Nordclc
Avatar billede roenving Novice
16. juni 2005 - 13:01 #3
Okay '-)
Avatar billede roenving Novice
16. juni 2005 - 13:02 #4
-- jeg har så ikke tilføjet de ekstra funktioner, du ønsker, men jeg regner med, at du selv kan finde dem !-)
Avatar billede roenving Novice
25. juni 2005 - 15:06 #5
Lukketid, eller er der yderligere spørgsmål ?-)
Avatar billede nordclc Nybegynder
27. juni 2005 - 09:21 #6
Jeg ved det, men jeg kan ikke rigtig finde ud af at lave punkt 3. "Er summen mindre end 500 kr. så skal der lægges et gebyr på 50 kr. oven i". Kan du evt. hjælpe mig med det?

Mvh Nordclc
Avatar billede roenving Novice
28. juni 2005 - 14:57 #7
Før eller efter moms ?-)

    for(i=1;numFields+1>i;i++){
        sum += +document.getElementById("Sum"+i).value
    }
    sum += sum<500?50:0;//skal være 400 og 40 hvis efter moms !-)
    ialt.value = formatNum(sum);
    ialt1.value = formatNum(sum*1.25);
Avatar billede nordclc Nybegynder
25. oktober 2005 - 11:11 #8
roenving> så fik jeg endelig lavet mit program færdigt, beklager ventetiden. Tak for hjælpen.

Mvh nordclc
Avatar billede roenving Novice
25. oktober 2005 - 14:00 #9
-- og jeg takker for point ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester