/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Addere/multiplicere tal fra form felter (J~
Fra : Rasmus Nielsen


Dato : 19-09-02 17:54

Hej,

Jeg har en opgave, som jeg ikke rigtig kan hitte ud af. Jeg håber i kan
hjælpe mig. Det drejer sig om en tabel, der, som en online indkøbskurv
fyldes med varer med et bestemt varenummer. Navnet og prisen fremkalder jeg
så fra en database vha. asp - det er fint nok. Det er javascripten jeg ikke
er så god til.

Den kan ses på http://www.rasmusn.dk/tabel.gif (5 KB)

Det jeg ønsker, er at brugeren skal kunne udfylde et antal i "Antal"
boksen - det skal så ganges med stk. prisen (som jeg kan ligge ind i
scriptet via serverside-programmering). Derefter skal det hele så lægges
sammen i "Pris i alt".

Hvordan laves dette i javascript? Kildekoden til tabellen (efter
asp-eksekvering) kan ses nederst i denne post.

På forhånd tak!

Venlig hilsen, Rasmus Nielsen.

<table border=1 width=700>
<tr>
<td width=82 align=center><p><b>Varenummer</b></p></td>
<td width=325 align=left><p><b>Varenavn</b></p></td>
<td width=50 align=center><p><b>Antal</b></p></td>
<td width=80 align=right><p><b>Pris pr. stk.</b></p></td>
<td width=80 align=right><p><b>Samlet pris</b></p></td>
<td width=50 align=right><p><b>Opdater</b></p></td>
</tr>
<tr>
<td width=82 align=center><p>1109</p></td>
<td width=325 align=left><p>Stol</p></td>
<td width=50 align=center><p><input type=text size=2></p></td>
<td width=80 align=right><p>1585</p></td>
<td width=80 align=right><p><input type=text size=5></p></td>
<td width=50 align=right><p><a
href='bestilling.asp?remove=1109'>Fjern</a></p></td>
</tr>
<tr>
<td width=82 align=center><p>1122</p></td>
<td width=325 align=left><p>Bord<p></td>
<td width=50 align=center><p><input type=text size=2></p></td>
<td width=80 align=right><p>1295</p></td>
<td width=80 align=right><p><input type=text size=5></p></td>
<td width=50 align=right><p><a
href='bestilling.asp?remove=1122'>Fjern</a></p></td>
</tr>
<tr>
<td width=82 align=center><p>1222</p></td>
<td width=325 align=left><p>Dug</p></td>
<td width=50 align=center><p><input type=text size=2></p></td>
<td width=80 align=right><p>235</p></td>
<td width=80 align=right><p><input type=text size=5></p></td>
<td width=50 align=right><p><a
href='bestilling.asp?remove=1222'>Fjern</a></p></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td bgcolor='#A8D898'><p><b>Pris i alt</b></p></td>
<td bgcolor='#A8D898'><input type=text size=5 readonly></td>
<td>&nbsp;</td>
</tr>
</table>



 
 
Martin Persson (19-09-2002)
Kommentar
Fra : Martin Persson


Dato : 19-09-02 21:49


----- Original Message -----
From: "Rasmus Nielsen" <postmaster@rasmusn.dk>
Newsgroups: dk.edb.internet.webdesign.clientside
Sent: Thursday, September 19, 2002 6:53 PM
Subject: Addere/multiplicere tal fra form felter (JavaScript)


> Hej,
>

SNIP

>
> Det jeg ønsker, er at brugeren skal kunne udfylde et antal i "Antal"
> boksen - det skal så ganges med stk. prisen (som jeg kan ligge ind i
> scriptet via serverside-programmering). Derefter skal det hele så lægges
> sammen i "Pris i alt".
>



Hej Rasmus

Jeg har bikset noget sammen der gør det du ønsker (tror jeg)
Det du skal gøre når du laver dit asp er at give hver input box et navn
efter denne "syntax" antal_vareNr eller sum_vareNr
Fx
<input type=text size=2 name="antal_1222" onkeyup="calc(1222,235)">
som du ser, skal der i hvert input felt, man kan skrive et antal i kaldes
funktionen, calc() med parametrene vareNr og pris.

Jeg forestiller mig at du kan skrive disse linjer rimeligt nemt ud vha asp

Desuden skal du før hele tabellen skrive <form name="Form"> og lukke denne
efter tabellen.

Den input box der viser den samlede pris skal bare have navnet total.

Hmm det var en masse ord her er så koden (jeg har taget udgangspunkt i den
du postede). Håber du forstår tankegangen
Det skal lige siges at jeg har inkluderet en kontrol af det indtastede
således at hvis man taster andet end tal bliver feltet automatisk sat til
nul

<script>
function calc(vareNr,pris)
{

if

diff = Form['antal_' + vareNr].value * pris - Form['sum_' + vareNr].value
Form.total.value = Form.total.value * 1 + diff * 1;
Form['sum_' + vareNr].value = Form['antal_' + vareNr].value * pris;
}
</script>


<form name="Form">

<table border=1 width=700>
<tr>
<td width=82 align=center><p><b>Varenummer</b></p></td>
<td width=325 align=left><p><b>Varenavn</b></p></td>
<td width=50 align=center><p><b>Antal</b></p></td>
<td width=80 align=right><p><b>Pris pr. stk.</b></p></td>
<td width=80 align=right><p><b>Samlet pris</b></p></td>
<td width=50 align=right><p><b>Opdater</b></p></td>
</tr>
<tr>
<td width=82 align=center><p>1109</p></td>
<td width=325 align=left><p>Stol</p></td>
<td width=50 align=center><p><input type=text size=2 name="antal_1109"
onkeyup="calc(1109,1585)" value="0"></p></td>
<td width=80 align=right><p>1585</p></td>
<td width=80 align=right><p><input type=text size=5 name="sum_1109" readonly
value="0"></p></td>
<td width=50 align=right><p><a
href='bestilling.asp?remove=1109'>Fjern</a></p></td>
</tr>
<tr>
<td width=82 align=center><p>1122</p></td>
<td width=325 align=left><p>Bord<p></td>
<td width=50 align=center><p><input type=text size=2 name="antal_1122"
onkeyup="calc(1122,1295)" value="0"></p></td>
<td width=80 align=right><p>1295</p></td>
<td width=80 align=right><p><input type=text size=5 name="sum_1122" readonly
value="0"> </p></td>
<td width=50 align=right><p><a
href='bestilling.asp?remove=1122'>Fjern</a></p></td>
</tr>
<tr>
<td width=82 align=center><p>1222</p></td>
<td width=325 align=left><p>Dug</p></td>
<td width=50 align=center><p><input type=text size=2 name="antal_1222"
onkeyup="calc(1222,235)" value="0"></p></td>
<td width=80 align=right><p>235</p></td>
<td width=80 align=right><p><input type=text size=5 name="sum_1222" readonly
value="0"></p></td>
<td width=50 align=right><p><a
href='bestilling.asp?remove=1222'>Fjern</a></p></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td bgcolor='#A8D898'><p><b>Pris i alt</b></p></td>
<td bgcolor='#A8D898'><input type=text size=5 name="total" readonly
value=0></td>
<td>&nbsp;</td>
</tr>
</table>

</form>

Med Venlig Hilsen
Martin




Rasmus Nielsen (20-09-2002)
Kommentar
Fra : Rasmus Nielsen


Dato : 20-09-02 10:17

Tusind tak for det! Det funger perfekt!

Lige én ting til:

Er det muligt at sætte default-værdien i <input type=text size=2
name="antal_1222" onkeyup="calc(1222,235)" value="0"> til 1, så der som
udgangspunkt regnes med én vare af hver? Hvis jeg bare sætter value til én,
står der godt nok én, men der regnes først med én, hvis jeg skriver det
igen.

--
Venlig hilsen / Best regards,

Rasmus Nielsen.



Martin Persson (20-09-2002)
Kommentar
Fra : Martin Persson


Dato : 20-09-02 16:22


"Rasmus Nielsen" <postmaster@rasmusn.dk> wrote in message
news:3d8ae781$0$49631$edfadb0f@dspool01.news.tele.dk...
> Tusind tak for det! Det funger perfekt!
>
> Lige én ting til:
>
> Er det muligt at sætte default-værdien i <input type=text size=2
> name="antal_1222" onkeyup="calc(1222,235)" value="0"> til 1, så der som
> udgangspunkt regnes med én vare af hver? Hvis jeg bare sætter value til
én,
> står der godt nok én, men der regnes først med én, hvis jeg skriver det
> igen.
>

Det letteste er vel at få asp til at sætte prisen gange 1 ind i det felt der
viser summen. Hvis du vil have et javascript til at regne værdien ud når
siden loades kan godt lade sig gøre men så skal du bare have asp til at
skrive noget længere ud en bare et til i et input felt.

Hilsen Martin



Rasmus Nielsen (20-09-2002)
Kommentar
Fra : Rasmus Nielsen


Dato : 20-09-02 17:50

> Det letteste er vel at få asp til at sætte prisen gange 1 ind i det felt
der
> viser summen. Hvis du vil have et javascript til at regne værdien ud når
> siden loades kan godt lade sig gøre men så skal du bare have asp til at
> skrive noget længere ud en bare et til i et input felt.

Hvis jeg indsætter prisen som value virker totalprisen ikke...

--
Venlig hilsen / Best regards,

Rasmus Nielsen.



Martin Persson (21-09-2002)
Kommentar
Fra : Martin Persson


Dato : 21-09-02 09:25


----- Original Message -----
From: "Rasmus Nielsen" <postmaster@rasmusn.dk>
Newsgroups: dk.edb.internet.webdesign.clientside
Sent: Friday, September 20, 2002 6:50 PM
Subject: Re: Addere/multiplicere tal fra form felter (JavaScript)


> > Det letteste er vel at få asp til at sætte prisen gange 1 ind i det felt
> der
> > viser summen. Hvis du vil have et javascript til at regne værdien ud når
> > siden loades kan godt lade sig gøre men så skal du bare have asp til at
> > skrive noget længere ud en bare et til i et input felt.
>
> Hvis jeg indsætter prisen som value virker totalprisen ikke...
>
Nå ja det er klart.
Jeg går ud fra at varerne på siden ikke altid er de samme, altså de bliver
sat ind vha asp, har jeg ret?

Det vil sige at det javascript der kører skal virke uafhængigt af
varenummeret, på nær når funktionen kaldes. Hvis du vil have scriptet til at
regne totalprisen ud når siden loades skal scriptet bruge samtlige varenumre
og tilhørene priser. Det kan man godt, det kræver bare at du skriver noget
lignende.

<body onload="total()">
<script>
function total()
{
calc(vareNr1,pris1);
calc(vareNr2,pris2);
clac(vareNr3,pris3);
clac(vareNr4,pris4);
// osv for hver enkelt vare
}
</script>

Det kan vel sagtens skrives med asp, jeg vil dog mene det er nemmere at få
asp til at regne total prisen ud samtidig med at du genererer siden og så
bare plotte det ind i total feltet.

<input type="text" size="5" name="total" readonly value="<asp udregning>">

(Ja undskyld men jeg kan ikke asp kun php)

....du skal jo alligevel skive priserne ud andre steder hvorfor så ikke også
lægge dem sammen.

For at sige det som det er. Javascriptet er baseret på BRUGER-ændringer i et
felt af gangen, nemlig antal feltet for hver enkelt vare. Scriptet er ikke
beregnet på at regne alle priserne ud lige når siden loades.

Håber du forstår mit synspunkt
Med venlig hilsen
Martin



Martin Persson (19-09-2002)
Kommentar
Fra : Martin Persson


Dato : 19-09-02 21:51


Og her er den opdaterede kode så


<script>


function validate(vareNr)
{
var field = Form['antal_' + vareNr];
var valid = "0123456789";
var ok = "yes";
var temp;
for (var i=0; i<field.value.length; i++)
{
temp = "" + field.value.substring(i, i+1);
if (valid.indexOf(temp) == "-1") ok = "no";
}
if (ok == "no") Form['antal_' + vareNr].value = 0;
}


function calc(vareNr,pris)
{
validate(vareNr);

var diff = Form['antal_' + vareNr].value * pris - Form['sum_' +
vareNr].value
Form.total.value = Form.total.value * 1 + diff * 1;
Form['sum_' + vareNr].value = Form['antal_' + vareNr].value * pris;
}
</script>


<form name="Form">

<table border=1 width=700>
<tr>
<td width=82 align=center><p><b>Varenummer</b></p></td>
<td width=325 align=left><p><b>Varenavn</b></p></td>
<td width=50 align=center><p><b>Antal</b></p></td>
<td width=80 align=right><p><b>Pris pr. stk.</b></p></td>
<td width=80 align=right><p><b>Samlet pris</b></p></td>
<td width=50 align=right><p><b>Opdater</b></p></td>
</tr>
<tr>
<td width=82 align=center><p>1109</p></td>
<td width=325 align=left><p>Stol</p></td>
<td width=50 align=center><p><input type=text size=2 name="antal_1109"
onkeyup="calc(1109,1585)" value="0"></p></td>
<td width=80 align=right><p>1585</p></td>
<td width=80 align=right><p><input type=text size=5 name="sum_1109" readonly
value="0"></p></td>
<td width=50 align=right><p><a
href='bestilling.asp?remove=1109'>Fjern</a></p></td>
</tr>
<tr>
<td width=82 align=center><p>1122</p></td>
<td width=325 align=left><p>Bord<p></td>
<td width=50 align=center><p><input type=text size=2 name="antal_1122"
onkeyup="calc(1122,1295)" value="0"></p></td>
<td width=80 align=right><p>1295</p></td>
<td width=80 align=right><p><input type=text size=5 name="sum_1122" readonly
value="0"> </p></td>
<td width=50 align=right><p><a
href='bestilling.asp?remove=1122'>Fjern</a></p></td>
</tr>
<tr>
<td width=82 align=center><p>1222</p></td>
<td width=325 align=left><p>Dug</p></td>
<td width=50 align=center><p><input type=text size=2 name="antal_1222"
onkeyup="calc(1222,235)" value="0"></p></td>
<td width=80 align=right><p>235</p></td>
<td width=80 align=right><p><input type=text size=5 name="sum_1222" readonly
value="0"></p></td>
<td width=50 align=right><p><a
href='bestilling.asp?remove=1222'>Fjern</a></p></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td bgcolor='#A8D898'><p><b>Pris i alt</b></p></td>
<td bgcolor='#A8D898'><input type=text size=5 name="total" readonly
value=0></td>
<td>&nbsp;</td>
</tr>
</table>

</form>



Jan 8sen (28-11-2002)
Kommentar
Fra : Jan 8sen


Dato : 28-11-02 11:42

Martin Persson wrote in dk.edb.internet.webdesign.clientside:
> Og her er den opdaterede kode så

Findes der mon et tilsvarende script, som o g s å virker i Netscape?


--
mvh 8sen


--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste