17. april 2002 - 18:22
Der er
9 kommentarer og 2 løsninger
At plusse og gange formularværdier
En formular ser således ud: <form name="pris" method="post" action="order.asp"> <table width="100%" border="0" cellspacing="0" cellpadding="2"> <tr> <td class="tekst1">Vare1</td> <td width="75"><input type="text" ame="vare1Antal" size="4" class="tekst1" value="1"></td> <td width="75"><input type="text" name="Vare1pris" size="7" class="tekst1" value="149,95" onFocus="blur()"></td> </tr> <tr> <td class="tekst1">Vare2</td> <td width="75"><input type="text" name="vare2Antal" size="4" class="tekst1" value="1"></td> <td width="75"><input type="text" name="Vare2pris" size="7" class="tekst1" value="99,95" onFocus="blur()"></td> </tr> <tr> <td class="tekst1">Vare3</td> <td width="75"><input type="text" name="vare3Antal" size="4" class="tekst1" value="1"></td> <td width="75"><input type="text" name="Vare3pris" size="7" class="tekst1" value="299,95" onFocus="blur()"></td> </tr> <tr> <td></td> <td width="75"><input type="submit" name="Submit" value="Submit"></td> <td width="75"><input type="text" name="total" size="7" class="tekst1" value="" onFocus="blur()"></td> </tr> </table> </form> Hvordan laver jeg et javascript, der først ganger vare1pris med vare1antal, derefter vare2pris med vare2antal, derefter vare3pris med vare3antal tilsidst skal scriptet skrive totalprisen i text-feltet 'total'. Det hele skal selvfølgelig foregå "real-time" eller hvad man kan kalde det... Simpelt ikke? Men hvordan?
Annonceindlæg fra Cognizant
17. april 2002 - 18:29
#1
Laver d lige til dig...
17. april 2002 - 18:58
#2
Here you go... Den er testet! =) <html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <SCRIPT> function beregn(){ //alert(eval(document.pris.vare1Antal.value+'*'+149.95)); document.pris.Vare1pris.value=eval(document.pris.vare1Antal.value+'*'+149.95); document.pris.Vare2pris.value=eval(document.pris.vare2Antal.value+'*'+99.95); document.pris.Vare3pris.value=eval(document.pris.vare3Antal.value+'*'+299.95); //alert(eval(document.pris.Vare1pris.value+'+'+document.pris.Vare2pris.value+'+'+document.pris.Vare3pris.value)); //document.pris.total.value=eval('2.5+2,5') document.pris.total.value=eval(document.pris.Vare1pris.value+'+'+document.pris.Vare2pris.value+'+'+document.pris.Vare3pris.value); } </SCRIPT> </head> <body bgcolor="#FFFFFF" text="#000000"> <form name="pris" method="post" action="order.asp"> <table width="100%" border="0" cellspacing="0" cellpadding="2"> <tr> <td class="tekst1">Vare1</td> <td width="75"><input type="text" name="vare1Antal" size="4" class="tekst1" value="1" OnChange="beregn()"></td> <td width="75"> <input type="text" name="Vare1pris" size="7" class="tekst1" value="149.95" onFocus="blur()"> </td> </tr> <tr> <td class="tekst1">Vare2</td> <td width="75"><input type="text" name="vare2Antal" size="4" class="tekst1" value="1" OnChange="beregn()"></td> <td width="75"> <input type="text" name="Vare2pris" size="7" class="tekst1" value="99.95" onFocus="blur()"> </td> </tr> <tr> <td class="tekst1">Vare3</td> <td width="75"><input type="text" name="vare3Antal" size="4" class="tekst1" value="1" OnChange="beregn()"></td> <td width="75"> <input type="text" name="Vare3pris" size="7" class="tekst1" value="299.95" onFocus="blur()"> </td> </tr> <tr> <td></td> <td width="75"><input type="submit" name="Submit" value="Submit"></td> <td width="75"><input type="text" name="total" size="7" class="tekst1" value="" onFocus="blur()"></td> </tr> </table> </form> </body> </html>
17. april 2002 - 20:25
#3
Det ser godt ud, men der er lige et par få ting. Når man ganger med 3, 6 eller 9 får tallene helt op til 4 cifre efter kommaet. Der går simpelthen ca. 1/10000'ende del til spilde i regnskabet. Det tyder på en regnefejl fra browserens side. Det er vel i sig selv ok hvis bare scriptet rundede beløbene op til nærmeste 100-dele så man f.eks ikke skal betale 199,8 kr. men 199,80 kr. eller i stedet for at der står 569,4499 står 569,45 ... Er det svært? Jeg ved at der i ASP findes noget der hedder FormatCurrency og lign.. der må findes noget lign. til JavaScript ikke? Ellers ser det fint ud. Jeg tilføjede en OnKeyUp="beregn()" ved siden af OnChange="beregn()" så at scriptet regner ud så snart man indtaster det nye beløb og ikke først når man markerer noget andet (Et andet felt f.eks.) Sidste ting (Jeg tilføjer lige 20 point :-): Hvordan undgår man en fejl i scriptet når man efterlader en af felterne tomme. F.eks kunne man vel sørge for at det tomme rum automatisk blev erstattet af et '0' ... Er det noget du gider at tage dig af, for jeg kan ikke finde ud af det :-)?
17. april 2002 - 21:36
#4
Jeg har løst problemet med, hvis der ikke står noget i feltet: <html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <SCRIPT> function hey(gryn){ if (gryn.value == ""){ gryn.value=0; } if (gryn.value == " "){ gryn.value=0; } } function beregn(gryn){ if (gryn.value == ""){ } else { document.pris.Vare1pris.value=eval(document.pris.vare1Antal.value+'*'+149.95); document.pris.Vare2pris.value=eval(document.pris.vare2Antal.value+'*'+99.95); document.pris.Vare3pris.value=eval(document.pris.vare3Antal.value+'*'+299.95); document.pris.total.value = eval(document.pris.Vare1pris.value+'+'+document.pris.Vare2pris.value+'+'+document.pris.Vare3pris.value); } } </SCRIPT> </head> <body bgcolor="#FFFFFF" text="#000000"> <form name="pris" method="post" action="order.asp"> <table width="100%" border="0" cellspacing="0" cellpadding="2"> <tr> <td class="tekst1">Vare1</td> <td width="75"><input type="text" name="vare1Antal" size="4" class="tekst1" value="1" OnKeyUp="beregn(this)" OnChange="hey(this)"></td> <td width="75"> <input type="text" name="Vare1pris" size="7" class="tekst1" value="149.95" onFocus="blur()"> </td> </tr> <tr> <td class="tekst1">Vare2</td> <td width="75"><input type="text" name="vare2Antal" size="4" class="tekst1" value="1" OnKeyUp="beregn(this)" OnChange="hey(this)"></td> <td width="75"> <input type="text" name="Vare2pris" size="7" class="tekst1" value="99.95" onFocus="blur()"> </td> </tr> <tr> <td class="tekst1">Vare3</td> <td width="75"><input type="text" name="vare3Antal" size="4" class="tekst1" value="1" OnKeyUp="beregn(this)" OnChange="hey(this)"></td> <td width="75"> <input type="text" name="Vare3pris" size="7" class="tekst1" value="299.95" onFocus="blur()"> </td> </tr> <tr> <td></td> <td width="75"><input type="submit" name="Submit" value="Submit"></td> <td width="75"><input type="text" name="total" size="7" class="tekst1" value="" onFocus="blur()"></td> </tr> </table> </form> </body> </html>
18. april 2002 - 15:11
#5
Hej andreas, jeg har fundet noget til dig som du kan bruge: var original=28.453 1) //round "original" til to decimaler var result=Math.round(original*100)/100 //returnerer 28.45 /Muddi
18. april 2002 - 21:07
#6
cool_casper (30) >>> Tak for scriptet gryn (20) >>> Yes, vi siger tak og så duede det også :-) muddi (Ikke ét skaldet point) >>> Hmmm... hvad hvis man skriver : <script> var original=28.9 var result=Math.round(original*100)/100 document.write(result) </script> Så returnerer den jo kun én decimal. Jeg skal ALTID have to :-) ... vi snakker kroner og øre her .. ingen betaler 9,5.- kr for noget? De betaler 9,50.- Jeg takker af, Morten, du hænger lige på og giver mig en løsning på den maglende decimal, ik? ses /Kotelet
18. april 2002 - 21:28
#7
Den er go' med dig Andreas! Jeg skal nok hitte noget slamkode til dig :o) Desuden skriver man ikke 9,50.- men 9,50 eller 89,- stregen betyder faktisk at der ikke er nogen decimaler ... altså ni-og-firs komma ingenting! :o| HATTENÅL! Kys og klem fra Muddi
18. april 2002 - 22:25
#8
Thx for poinz...
18. april 2002 - 22:28
#9
ja... tak for point
18. april 2002 - 22:46
#10
Du kan sgu kysse dig selv et hvis sted ... (!) Bare jeg ikke skal kigge på... ... ;-) FAAAAAAAAARVEL...
19. april 2002 - 00:04
#11
:P Føj!
Vi tilbyder markedets bedste kurser inden for webudvikling