24. februar 2007 - 14:25Der 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.
Sådan understøtter du en datadreven kultur, som skaber værdi i din virksomhed.
7. maj 2024
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...
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 :)
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.
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).
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!
Jeg har da fået point, men det er måske gået igennem efter du skrev dit indlæg kl. 18:37:38...?
Synes godt om
Ny brugerNybegynder
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.