05. april 2001 - 23:16Der er
27 kommentarer og 1 løsning
beregning af form felter
Oki :-)
Jeg har nogle tekst felter i en form. Der er et som viser antal og et som viser den samlet pris. Derudover er der et hidden som har en pris værdi. Antallet af gange disse tre felter kommer frem afhænger af hvor mange vare personen har i sin kurv. Men det jeg gerne vil er at når en bruger ændre i antal feltet (onchange) så ændre de tilhørende felter også deres værdi
antal * pris = nypris
Her er en javascript funktion som vist har noget med sagen at gøre
function beregn() { antal = form.antal.value; pris = form.prisstk.value; nypris = antal * pris; document.form.samlet.value = nypris; } </script>
Problemet er at felternes name= ændre værdi så hvordan kan jeg fortælle min funkltion hvilket set af felter der skal opdateres?????
Efter ti år i London, Madrid, Paris og Utrecht kommer Sabios AI-fokuserede program af arrangementer om kundeoplevelser, ‘Disrupt’, for første gang til Danmark.
siden det er en liste vil jeg gå du fra at dine 3 felter gentager sig i en falst rækkefølge.
<input name=\'antal\' type=\'text\' value=\'\' onchange=\'beregn(this)\'> <input name=\'prisstk\' type=\'hidden\' value=\"25\"> <input name=\'samlet\' type=\'text\' value=** onfocus=\'this.blur()\'> og så de næste tre: <input name=\'antal2\' type=\'text\' value=\'\' onchange=\'beregn(this)\'> <input name=\'prisstk2\' type=\'hidden\' value=\"25\"> <input name=\'samlet2\' type=\'text\' value=** onfocus=\'this.blur()\'>
det væsentlige er at de tre felter der skal håndteres af beregn kommer lige efter hinanden. Hvis vi kan stole på det kan du helt kvitte navnene på felterne (medmindre du har brug for dem til noget andet:) skriv funktionen onchange sådanher:
function beregn( antalFelt ) { var frm = antalfelt.form; var i; for ( i=0; frm.elements[i]!=antalFelt; i++ ) ; //find feltets nummer. // i er nu elementnummer på antalfeltet antal = frm.elements[i].value; // antal-feltet pris = frm.elements[i+1].value; // hidden felt med prisen nypris = antal * pris; frm.elements[i+2].value = nypris; // samlet feltet }; //end beregn( formelement objekt )
Prøv dette (utestet) - der tages forbehold for trykfejl. Du skal dog huske at have en <form> rundt om det hele. Der er sat numre på alle navne. Er det ok på næste side ??
her er funktionen:
function beregn(antal,pris,nypris) { nypris.value = antal.value * pris.value; } </script>
Ja, nu kom den til at hedde \"nypris\" i funktionen, men feltet den refererer til hedder jo \"samlet\". Det er ligemeget, for det ordner vi jo i kaldet. Og ja, den skal være der, for hvor skal vi ellers aflevere resultatet?
<center> <table border=\"0\" width=\"780\" align=\"left\"> <tr><td> <table class=\"use\" width=\"100%\"> <tr><td> <b><center>Kassen - din indkøbskurv</b><br><br> Her har du muligheden for at rette på antallet af en valgt vare eller helt at slette den fra din kurv.<br><br> <% dim antal, kurv, pris, vareNr, count
set kurv = Session(\"kurv\") antal = Session(\"kurv\").count
IF antal = 0 THEN
Response.write \"<font color=\'red\'><b>Der er ingen vare i din kurv</b></font><br><br><a href=\'forside.asp\'>Tilbage til forsiden</a>\"
ELSE
dim key, i key = kurv.keys response.write \"<form action=\'bestilling_action.asp\' method=\'post\'>\" response.write \"<table class=\'menu\' border=\'0\'>\"
for i = 0 to kurv.Count -1
vareNr = key(i) count = kurv.item(key(i))
SQL = \"SELECT titel, pris FROM butik WHERE nr =\" &vareNr Set RS = Con.Execute(SQL) taeller = 0 IF NOT RS.EOF THEN taeller = taeller +1
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.