13. marts 2004 - 11:11
Der er
20 kommentarer og 1 løsning
Online beregning af beløb i form
Hej, Jeg er i gang med at lave en bestillingsside i asp. Jeg vil have bestillingsformen til at beregne tal fra inputs, og derefter udføre beregningen, uden at skulle opdatere vinduet. Eks. FORMEN: <input type="text" name="Antal1"> * <input type="text" name="Pris1" = <%=strSamletPris1%> <input type="text" name="Antal2"> * <input type="text" name="Pris2" = <%=strSamletPris2%> <input type="text" name="Antal3"> * <input type="text" name="Pris3" = <%=strSamletPris3%> RESULTAT: strSamletPris1 + strSamletPris2 + strSamletPris3 = strTotalBeløb Hvordan gør jeg det, så det automatisk bliver beregnet (uden at skulle opdatere vinduet? Jeg håber at jeg har forklaret det, så det er til at forstå :-) Apo
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
13. marts 2004 - 11:24
#1
det skal du gøre i javascript... noget i stilen af: <script type="text/JavaScript"> function calc(ObjForm) { p1 = ObjForm.strSamletPris1.value; p2 = ObjForm.strSamletPris2.value; p3 = ObjForm.strSamletPris3.value; ObjForm.samletPris.value = p1+p2+p3; calced = true; } </script> <form> <input type="text" name="Antal1"> * <input type="text" name="Pris1" value="<%=strSamletPris1%>" onblur="calc(this.form)"> <input type="text" name="Antal2"> * <input type="text" name="Pris2" value="<%=strSamletPris2%>" onblur="calc(this.form)"> <input type="text" name="Antal3"> * <input type="text" name="Pris3" value="<%=strSamletPris3%>" onblur="calc(this.form)"> <input type="text" name="samletPris" readonly> </form>
13. marts 2004 - 11:44
#2
retter lige lidt i det, havde skrevet forkerte feltnavne.. <script type="text/JavaScript"> function calc(ObjForm) { p1 = ObjForm.Pris1.value; p2 = ObjForm.Pris2.value; p3 = ObjForm.Pris3.value; ObjForm.samletPris.value = p1+p2+p3; calced = true; } </script> <form> <input type="text" name="Antal1"> * <input type="text" name="Pris1" value="<%=strSamletPris1%>" onblur="calc(this.form)"> <input type="text" name="Antal2"> * <input type="text" name="Pris2" value="<%=strSamletPris2%>" onblur="calc(this.form)"> <input type="text" name="Antal3"> * <input type="text" name="Pris3" value="<%=strSamletPris3%>" onblur="calc(this.form)"> <input type="text" name="samletPris" readonly> </form>
13. marts 2004 - 11:44
#3
og måske skal denne linie: calced = true; rettes til: return true;
13. marts 2004 - 11:57
#4
Hej ellebaek, Og tak for din tid :-) Scriptet sætter godt nok tal ind i "samletPris", men den planter tallene i forlængelse af hinanden og lægger dem ikke sammen. Desuden får jeg en fejl - Et objekt var ventet Apo
13. marts 2004 - 12:01
#5
prøv sådan her i stedet.. <script type="text/JavaScript"> function calc(ObjForm) { p1 = ObjForm.Pris1.value; p2 = ObjForm.Pris2.value; p3 = ObjForm.Pris3.value; ObjForm.samletPris.value = parseFloat(p1)+parseFloat(p2)+parseFloat(p3); return true; } </script> <form> <input type="text" name="Antal1"> * <input type="text" name="Pris1" value="<%=strSamletPris1%>" onblur="calc(this.form)"> <input type="text" name="Antal2"> * <input type="text" name="Pris2" value="<%=strSamletPris2%>" onblur="calc(this.form)"> <input type="text" name="Antal3"> * <input type="text" name="Pris3" value="<%=strSamletPris3%>" onblur="calc(this.form)"> <input type="text" name="samletPris" readonly> </form>
13. marts 2004 - 12:12
#6
Hm... Hvis jeg kun vælger at bestille en linje, så skriver "samletPris" "NaN"? Men hvis jeg udfylder alle linjer får jeg et korrekt resultat. Kan det ikke laves så jeg også kan nøjes med at udfylde en eller to linjer? Apo
13. marts 2004 - 12:16
#7
<script type="text/JavaScript"> function calc(ObjForm) { var intSum = 0; p1 = ObjForm.Pris1.value; if( parseFloat( p1 ) ) { intSum += parseFloat( p1 ); } p2 = ObjForm.Pris2.value; if( parseFloat( p2 ) ) { intSum += parseFloat( p2 ); } p3 = ObjForm.Pris3.value; if( parseFloat( p3 ) ) { intSum += parseFloat( p3 ); } ObjForm.samletPris.value = intSum; return true; } </script> <form> <input type="text" name="Antal1"> * <input type="text" name="Pris1" value="<%=strSamletPris1%>" onblur="calc(this.form)"> <input type="text" name="Antal2"> * <input type="text" name="Pris2" value="<%=strSamletPris2%>" onblur="calc(this.form)"> <input type="text" name="Antal3"> * <input type="text" name="Pris3" value="<%=strSamletPris3%>" onblur="calc(this.form)"> <input type="text" name="samletPris" readonly> </form> Sådan her skulle jeg mene.
13. marts 2004 - 12:27
#8
Kanon, det fungerer! Jeg har lige et sidste spørgsmål... Jeg vil gerne have at <%=strSamletPris1%>, <%=strSamletPris2%> og <%=strSamletPris3%> bliver beregnet ud fra en enhedspris: Enten via: <input type="tekst" name="enhedspris1"> eller <%=strEnhedspris1%> Sådan så regnestykket ser sådan ud: Antal1 * Enhedspris1 = SamletPris1 Antal2 * Enhedspris2 = SamletPris2 Antal3 * Enhedspris3 = SamletPris3 TotalBeløb = SamletPris1 + SamletPris2 + SamletPris3 Apo
13. marts 2004 - 12:34
#9
noget i denne stil måske ? <script type="text/JavaScript"> function calc(ObjForm) { var intSum = 0; p1 = ObjForm.enhPris1.value; if( parseFloat( p1 ) ) { p1 = parseFloat( p1 ); } a1 = ObjForm.Antal1.value; if( parseInt( a1 ) ) { sum1 = parseInt( a1 ) * p1; intSum += sum1 } p2 = ObjForm.enhPris2.value; if( parseFloat( p2 ) ) { p2 = parseFloat( p2 ); } a2 = ObjForm.Antal2.value; if( parseInt( a2 ) ) { sum2 = parseInt(a2) * p2; intSum += sum2 } p3 = ObjForm.Pris3.value; if( parseFloat( p3 ) ) { p3 = parseFloat( p3 ); } a3 = ObjForm.Antal3.value; if( parseInt( a3 ) ) { sum3 = parseInt( a3 ) * sum3; intSum += sum3 } ObjForm.Pris1.value = sum1; ObjForm.Pris2.value = sum2; ObjForm.Pris3.value = sum3; ObjForm.samletPris.value = intSum; return true; } </script> <form> <input type="hidden" name="enhPris1" value="<%=strEnhedsPris1%>"><input type="text" name="Antal1" onblur="calc(this.form)"> * <input type="text" name="Pris1" value="" onblur="calc(this.form)"> <input type="hidden" name="enhPris1" value="<%=strEnhedsPris2%>"><input type="text" name="Antal2" onblur="calc(this.form)"> * <input type="text" name="Pris2" value="" onblur="calc(this.form)"> <input type="hidden" name="enhPris1" value="<%=strEnhedsPris3%>"><input type="text" name="Antal3" onblur="calc(this.form)"> * <input type="text" name="Pris3" value="" onblur="calc(this.form)"> <input type="text" name="samletPris" readonly> </form>
13. marts 2004 - 12:49
#10
Ja noget i den stil... Nu får jeg bare en fejl: "sum3 er ikke defineret"? Apo
13. marts 2004 - 12:51
#11
mystisk... Virkede de første 2 summer ? <script type="text/JavaScript"> function calc(ObjForm) { var intSum = 0; p1 = ObjForm.enhPris1.value; a1 = ObjForm.Antal1.value; if( parseInt( a1 ) ) { if( parseFloat( p1 ) ) { p1 = parseFloat( p1 ); sum1 = parseInt( a1 ) * p1; intSum += sum1 } } p2 = ObjForm.enhPris2.value; a2 = ObjForm.Antal2.value; if( parseInt( a2 ) ) { if( parseFloat( p2 ) ) { p2 = parseFloat( p2 ); sum2 = parseInt(a2) * p2; intSum += sum2 } } p3 = ObjForm.Pris3.value; a3 = ObjForm.Antal3.value; if( parseInt( a3 ) ) { if( parseFloat( p3 ) ) { p3 = parseFloat( p3 ); sum3 = parseInt( a3 ) * sum3; intSum += sum3 } } ObjForm.Pris1.value = sum1; ObjForm.Pris2.value = sum2; ObjForm.Pris3.value = sum3; ObjForm.samletPris.value = intSum; return true; } </script> prøv dette script i stedet.
13. marts 2004 - 12:52
#12
Rettelse: når jeg taster et tal ind i "Antal1" og går videre til "Antal2" så kommer fejlen: "Sum2 er ikke defineret" det samme sker hvis "Antal1" er udfyldt og jeg indtaster et tal i "Antal2", her skriver den bare "sum3 er ikke defineret" Den regner heller ikke summen sammen Apo
13. marts 2004 - 13:00
#13
Samme resultat...
13. marts 2004 - 13:02
#14
har du defineret de forskellige felter altså enhPris1 osv... og så så jeg lige en fejl i: p3 = ObjForm.Pris3.value; a3 = ObjForm.Antal3.value; if( parseInt( a3 ) ) { if( parseFloat( p3 ) ) { p3 = parseFloat( p3 ); sum3 = parseInt( a3 ) * sum3; intSum += sum3 } } det skal rettes til: p3 = ObjForm.enhPris3.value; a3 = ObjForm.Antal3.value; if( parseInt( a3 ) ) { if( parseFloat( p3 ) ) { p3 = parseFloat( p3 ); sum3 = parseInt( a3 ) * sum3; intSum += sum3 } } Men bliver nødt til at smutte nu, smider lige et svar for en sikkerheds skyld ;-)
13. marts 2004 - 13:02
#15
Den første fejlmeddelelse er: "Et objekt var ventet", dernæst kommer den med "sum2/sum3 er ikke defineret" Apo
13. marts 2004 - 14:07
#16
<script type="text/JavaScript"> function calc(ObjForm) { var intSum = 0; p1 = ObjForm.enhPris1.value; a1 = ObjForm.Antal1.value; if( parseInt( a1 ) ) { if( parseFloat( p1 ) ) { p1 = parseFloat( p1 ); sum1 = parseInt( a1 ) * p1; ObjForm.Pris1.value = sum1; intSum += sum1 } } p2 = ObjForm.enhPris2.value; a2 = ObjForm.Antal2.value; if( parseInt( a2 ) ) { if( parseFloat( p2 ) ) { p2 = parseFloat( p2 ); sum2 = parseInt(a2) * p2; ObjForm.Pris2.value = sum2; intSum += sum2 } } p3 = ObjForm.Pris3.value; a3 = ObjForm.Antal3.value; if( parseInt( a3 ) ) { if( parseFloat( p3 ) ) { p3 = parseFloat( p3 ); sum3 = parseInt( a3 ) * sum3; ObjForm.Pris3.value = sum3; intSum += sum3 } } ObjForm.samletPris.value = intSum; return true; } </script> prøv dette script i stedet.
13. marts 2004 - 14:37
#17
Hej ellebaek, Det virker med de første 2, hvor den udregner beløbene. Men det går galt ved den 3. Her får jeg fejlen: "sum3 er ikke defineret" Og jeg har rettet "p3 = ObjForm.Pris3.value;" til "p3 = ObjForm.enhPris3.value; " ;-) Apo P.S. Kan det forresten lade sig gøre at ændre "onblur" til "onchange" (eller andet), så beregningen sker umiddelbart efter at brugeren har indtastet antal i feltet? Apo
13. marts 2004 - 19:08
#18
arh.. det var min fejl i sum3... p3 = ObjForm.Pris3.value; a3 = ObjForm.Antal3.value; if( parseInt( a3 ) ) { if( parseFloat( p3 ) ) { p3 = parseFloat( p3 ); sum3 = parseInt( a3 ) * p3; ObjForm.Pris3.value = sum3; intSum += sum3 } } Det her bør virke. Det skulle ikke være noget problem at ændre til onchange.
13. marts 2004 - 20:07
#19
Hej ellebaek, Den sidste " sum3 = parseInt( a3 ) * p3; " lurede jeg selv :-) Det hele virker nu! Det undrer mig bare at hvis jeg rydder et af felterne "antal", så går feltet "pris" ikke i nul - Beløbet bliver ikke korrigeret, ved du hvorfor? (samletPris korrigerer/modregner fint) Apo
13. marts 2004 - 20:46
#20
så skal du lave en else.. illustrere kun med p3... p3 = ObjForm.Pris3.value; a3 = ObjForm.Antal3.value; if( parseInt( a3 ) ) { if( parseFloat( p3 ) ) { p3 = parseFloat( p3 ); sum3 = parseInt( a3 ) * p3; ObjForm.Pris3.value = sum3; intSum += sum3 } else ObjForm.Pris3.value = 0; }
20. marts 2004 - 00:28
#21
Takker og lukker... Apo
Kurser inden for grundlæggende programmering