Avatar billede grind Nybegynder
24. februar 2007 - 14:25 Der er 11 kommentarer og
1 løsning

vise en sum af 2 formfelter i ASP javascript

Til min side har jeg nogle formfelter, hvor man kan bestille varer. Der er et antals felt og en stykpris og en sum på hver vare. Det er nemt at beregne summen på varelinierne dem ved at multiplicere de to variabler.
MEN hvordan tager jeg værdien fra de to beregnede felter - altså lægge flere sumfelter sammen. Hvis man anvender "+" vises begge værdierne blot som en samlet streng.
Avatar billede Slettet bruger
24. februar 2007 - 15:28 #1
øh... jeg er ikke helt sikker på at jeg forstår dit spørgsmål... Må jeg evt. prøve at se noget kode?
I øvrigt hvis det er en shop eller lignende du er ved at lave ville jeg anbefale dig at lave det i asp 100% eller andet sss i stedet... Idet der efter min erfaring så er mindre risiko for at dine scripts de fejler... Og hvis det skal være Java-script tror jeg der er større sandsynlighed for at du kan få et kompetent svar i Java-script-katagorien...

\Dan
Avatar billede grind Nybegynder
24. februar 2007 - 15:46 #2
Siden ligger her: http://www.faerdigbed.dk/Bestillingsseddel.asp
Det er de to "Ialt felter" der skal lægges sammen i en total
Avatar billede softspot Forsker
24. februar 2007 - 17:21 #4
Du skal nok benytte en parseFloat på din feltværdier, så du sikrer dig at der kommer rigtige tal ud af det inden du lægger dem sammen, ellers vil de nok blive lagt sammen som strenge (dvs. konkateneret).

Det kunne være noget i denne stil:

function addFields(frm) {
  var fPris1 = parseFloat(frm.txtPris1.value);
  var fPris2 = parseFloat(frm.txtPris2.value)
  var sum = 0;

  if(!isNaN(fPris1) && !isNan(fPris2))
    sum = fPris1 + parseFloat(frm.txtPris2.value);
  else
    alert('Mindst en af priserne er ikke et tal...');
}


parseFloat tillader dog at der er andet indhold i strengen - den tager bare den del af strengen som er et tal (startende fra begyndelsen af strengen). Hvis du vil sikre dig at det hele skal være et tal før du acceptere det, kan du benytter funktionen Number() i stedet, men den giver muligvis en fejl, hvis indholdet ikke er et tal...

Jeg har ikke testet noget af koden i dette indlæg, så det skal bare opfattes som en inspiration :)
Avatar billede grind Nybegynder
24. februar 2007 - 18:31 #5
Det kan jeg nu ikke få til at virke. JEg har aldrig arbejdet med en Java function før, men har tilpasset mine felter til dit forslag. Det virker bare ikke rigtigt...
Jeg har de to vareliniers sum beregnet således:
<%=Request("antalsk")*Request("prissk")%> og <%=Request("antal")*Request("pris")%>
Forslag til hvordan jeg får dem lavet om til noget der kan beregnes...
Jeg er ikke programmør, hvorfor det gerne skal være enkelt, men funktionelt.
Avatar billede softspot Forsker
24. februar 2007 - 22:22 #6
Hmm... jeg tror mit først forslag var lidt forfejlet, da jeg forventede at du ville lave beregningen på klienten, men det ser ud til at du vil gøre det på serveren.

Jeg kan foreslå flg.

Foretag beregningerne INDEN du viser dem i siden, så kan du lettere lave mellemregninger og konverteringer (og hvad der ellers skal laves med variable værdier som sendes til en side). Jeg plejer gerne at have en script-sektion i toppen og en HTML-sektion i unden af siden. I script-sektionen bliver alt det komplekse arbejde lavet, og evt. resultater gemt i variabler, som jeg så kan bruge i HTML-sektionen (ligesom du viser <%=variabel1%>). Denne metode kendetegnes ved at der kun er et minimum af logik i disse <%=variabel1%>-blokke i selve HTML-delen af siden, netop for at holde tingene så adskilt som muligt.

I dit konkrete tilfælde vil jeg anbefale flg. kode til script-sektionen:

<%
if isnumeric(Request("antalsk")) and isnumeric(Request("prissk")) then
  sumsk = cdbl(Request("antalsk")) * cdbl(Request("prissk"))
end if

if isnumeric(Request("antal")) and isnumeric(Request("pris")) then
  sum = cdbl(Request("antal")) * cdbl(Request("pris"))
end if
%>

og så blot benytte flg kode i HTML-sektionen (jeg kan ikke lige gennemskue hvad sk står for, men du kan nok se idéen):

<p>Den samlede pris er <%=formatNumber(sum,2,true,false,false)%> kroner.</p>
<p>Den samlede SK-pris er <%=formatNumber(sumsk,2,true,false,false)%> kroner.</p>

Jeg laver lige lidt formatering af tallet, så det udskrives med 2 decimaler efter komma og mindst et ciffer foran komma (hvis værdien er mindre end 1).
Avatar billede grind Nybegynder
25. februar 2007 - 08:37 #7
Jeg har fået det til at virke med:
<%=(Request("antalsk")*Request("prissk"))+(Request("antal")*Request("pris"))%>
Da jeg regner i hele tal betyder det ikke noget med valutaformatteringen.
Læg et svar så får du dine point!
Avatar billede softspot Forsker
25. februar 2007 - 14:56 #8
OK - fint nok :)
Avatar billede grind Nybegynder
25. februar 2007 - 18:31 #9
Tak for forslagene
Avatar billede grind Nybegynder
25. februar 2007 - 18:32 #10
-
Avatar billede grind Nybegynder
25. februar 2007 - 18:37 #11
Softspot: så kan du måske også lige fortælle mig hvorfor du ikke får dine ponit når jeg accepterer dit svar...
Avatar billede softspot Forsker
25. februar 2007 - 19:30 #12
Jeg har da fået point, men det er måske gået igennem efter du skrev dit indlæg kl. 18:37:38...?
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
Kurser inden for grundlæggende programmering

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