Avatar billede sublimegirl Nybegynder
18. juli 2003 - 09:25 Der er 27 kommentarer og
2 løsninger

Automatisk input i formular

Jeg har et produktkatalog, og dukker frem i denne del af min formular:

<tr>
            <td align=right valign="top"><font face="verdana, arial" size="1" color="#000000">
            Kategori:&nbsp;&nbsp;</font><BR></td>
            <td align=left valign="top">
            <font face="verdana, arial" size="1" color="<%= text %>">
            <select name="catcode">
                <% set  rscat=db.execute("select catcode, catname, catname_uk from categories order by catname")
                  while not rscat.eof
                    if rscat("catcode")=catcode then %>
                        <option value="<%=rscat("catcode")%>" selected><%= rscat("catname")%> (<%=rscat("catname_uk")%>)
                    <% else %>
                        <option value="<%=rscat("catcode")%>"><%= rscat("catname")%> (<%=rscat("catname_uk")%>)
                    <%end if
                  rscat.movenext
                  wend %>
            </select>
            </td>
            </tr>

Mit problem er, at jeg gerne vil have sendt en 'input type=hidden' med. Den skal så at sige genereres automatisk alt efter hvad der bliver valgt i min dropdown.

Hvordan kan det gøres?
Det skal lige siges at kataloget hives frem af en database.
Avatar billede intel4004 Novice
18. juli 2003 - 09:39 #1
En måde at gøre det på er denne:

<select name="catcode" onchange="document.formnavn.hiddenfield.value = document.formnavn.catcode.options[document.mainform.catcode.selectedIndex].text;">
                <% set  rscat=db.execute("select catcode, catname, catname_uk from categories order by catname")
                  while not rscat.eof
                    if rscat("catcode")=catcode then %>
                        <option value="<%=rscat("catcode")%>" selected><%= rscat("catname")%> (<%=rscat("catname_uk")%>)
                    <% else %>
                        <option value="<%=rscat("catcode")%>"><%= rscat("catname")%> (<%=rscat("catname_uk")%>)
                    <%end if
                  rscat.movenext
                  wend %>
            </select>

Tilføjet hidden-felt:
<input type="hidden" name="hiddenfield">

Intel4004
Avatar billede intel4004 Novice
18. juli 2003 - 09:41 #2
UPS En fejl i <select>:

<select name="catcode" onchange="document.formnavn.hiddenfield.value = document.formnavn.catcode.options[document.formnavn.catcode.selectedIndex].text;">

Din forms navn er så "formnavn".

Intel4004
Avatar billede sublimegirl Nybegynder
18. juli 2003 - 09:43 #3
Men selve det felt der skal dukke frem skal finde en bestemt post i databasen.

Vælges f.eks. kategorien "Stole" i dropdown boksen så skal input type=hidden se sådan ud:

<input type="hidden" name="catcode_uk" value="Chairs">
Avatar billede intel4004 Novice
18. juli 2003 - 10:41 #4
Din onchange skal ændres til:

onchange="document.formnavn.catcode_uk.value = document.formnavn.catcode.options[document.formnavn.catcode.selectedIndex].value;"

Er det catcode, catname, eller catname_uk du vil have til at stå i hidden-feltet?

Er du helt grøn i javascript? :)

Mvh Intel4004
Avatar billede sublimegirl Nybegynder
18. juli 2003 - 11:23 #5
Ja, jeg er super-green i javascript. Burde kende mere til det eftersom jeg har beskæftiget mig med webdesign siden 1997. Men jeg har nu altid forsøgt at snige mig udenom, og har øvet mig i CSS, ASP, database og alt muligt andet i stedet :)
Avatar billede sublimegirl Nybegynder
18. juli 2003 - 11:24 #6
Pyha, jeg holder lige en pause, og vender tilbage senere i dag.
Avatar billede roenving Novice
18. juli 2003 - 14:22 #7
Og lige en anelse lettere:
onchange="this.form.catcode_uk.value = this.options[this.selectedIndex].value;"

-- og så skal dit hidden field have en værdi fra start, som svarer til at brugeren ikke ændrer -- eventuelt skal du tvinge brugeren til at ændre ved at sætte en
<option value="">-- Select product-group --</option>
Avatar billede sublimegirl Nybegynder
19. juli 2003 - 10:29 #8
Undskyld ventetiden, jeg vender først tilbage mandag når jeg er på arbejde igen :)
Avatar billede intel4004 Novice
19. juli 2003 - 14:34 #9
ok ja men javascript er heller ikke min stærke side, men næsten uundværlig :)

roenving> Vidste ikke man kunne lave den så simpel. Bruger nu den metode på mit eget hjemmesideprojekt :)

Intel4004
Avatar billede roenving Novice
19. juli 2003 - 15:30 #10
Det er jo indlysende at bruge det objekt man har i hånden i stedet for at tage en telefon frem og ringe ned til hjemmehjælpen og bede dem sende en, som kan fortælle dig i hvilken hånd du har telefonen *g*
Avatar billede sublimegirl Nybegynder
22. juli 2003 - 09:41 #11
Jeg har nu endelig fået tid til at gennemteste det. Jeg vil bruge det her:
onchange="this.form.catcode_uk.value = this.options[this.selectedIndex].value;"

Men værdien skal jo regulere sig alt efter hvad brugeren vælger i en selectorbox...
Avatar billede sublimegirl Nybegynder
22. juli 2003 - 09:45 #12
Jeg kan ikke helt se hvor jeg skal placere scriptet... hvordan kan det sættes ind i dette?

<select name="catcode">
<% set  rscat=db.execute("select catcode, catname, catname_uk from categories order by catname")
while not rscat.eof
if rscat("catcode")=catcode then %>
<option value="<%=rscat("catcode")%>" selected><%= rscat("catname")%> (<%=rscat("catname_uk")%>)
<% else %>
<option value="<%=rscat("catcode")%>"><%= rscat("catname")%> (<%=rscat("catname_uk")%>)
<%end if
rscat.movenext
wend %>
</select>
Avatar billede intel4004 Novice
22. juli 2003 - 17:21 #13
Det skal placeres i SELECT:

<select name="catcode" onchange="this.form.catcode_uk.value = this.options[this.selectedIndex].value;">
Avatar billede intel4004 Novice
22. juli 2003 - 17:25 #14
Giver dig lige et link som du måske vil få gavn af :) :
http://www.htmlhelp.com/distribution/

Intel4004
Avatar billede sublimegirl Nybegynder
11. august 2003 - 09:25 #15
Intel4004 >

Hvad hedder den streng jeg sender med dit script?

<select name="catcode" onchange="this.form.catcode_uk.value = this.options[this.selectedIndex].value;">
Avatar billede sublimegirl Nybegynder
11. august 2003 - 09:29 #16
Jeg får også denne fejl-prompt, når jeg kører siden:

Fejl: 'this.form.catcode_uk' er ikke et objekt
Avatar billede roenving Novice
11. august 2003 - 13:08 #17
Har du et form-objekt som begge dele ligger inde i ?-)
Avatar billede sublimegirl Nybegynder
11. august 2003 - 13:15 #18
hmmm... er ikke helt med. Her er hele scriptet:

<select name="catcode" onchange="this.form.catcode_uk.value = this.options[this.selectedIndex].value;">
                <% set  rscat=db.execute("select catcode, catname, catname_uk from categories order by catname")
                  while not rscat.eof
                    if rscat("catcode")=catcode then %>
                        <option value="<%=rscat("catcode")%>" selected><%= rscat("catname")%> (<%=rscat("catname_uk")%>)
                    <% else %>
                        <option value="<%=rscat("catcode")%>"><%= rscat("catname")%> (<%=rscat("catname_uk")%>)
                    <%end if
                  rscat.movenext
                  wend %>
            </select>

Min form tag ser således ud:
<form action="product.asp?stage=save&productid=<%= productid %>" method=post>
Avatar billede roenving Novice
11. august 2003 - 13:37 #19
Du skal have en struktur, hvor formen, som skal modtage værdien skal omfatte selecten også:

<form action="product.asp?stage=save&productid=<%= productid %>" method=post>

<input -- den ene
<input -- og den anden

<input type="submit" value="Afsend">
<input type="reset" value="Reset form">



<select -- osv.


</select>

</form><!-- dette er vigtigt -- formen skal afsluttes _efter_ select'en -->
Avatar billede intel4004 Novice
11. august 2003 - 13:39 #20
Jeg kunne godt tænke mig at se det HTML som dit ASP script returnerer. Grunden er at jeg ser at du vil have noget af skriften fra de forskellige options sendt videre som form-data.

Jeg har aldrig brugt ASP, men jeg ser logikken i dit database udtræk.

et eksempel på HTML-output:
<option value="3">catname (catname_uk)</option>

Har jeg ret. Og du vil have det som står i parentes?

Hvor er din </option> egentlig henne?

Intel4004
Avatar billede sublimegirl Nybegynder
11. august 2003 - 14:02 #21
Her er det HTML som der returneres:
<select name="catcode" onchange="this.form.catcode_uk.value = this.options[this.selectedIndex].value;">
               
<option value="16">Borde (Tables)</option>
<option value="20">lyd (sound)</option>
<option value="15">Stole (Chairs)</option>
                   
</select>

Jeg har netop tilsat </option>, den havde jeg glemt. (Problemet er dog fortsat det samme). roenving den struktur du beskriver stemmer nu overens med mit script, nu hvor jeg har fået sat </option> på.
Avatar billede roenving Novice
11. august 2003 - 14:23 #22
Kan du ikke smide det inklusive form-start- og form-slut-tags -- ikke nødvendigvis det hele men ihvertfald f.eks. catcode_uk-feltet !-)
Avatar billede sublimegirl Nybegynder
11. august 2003 - 14:53 #23
værsgo:

<form action="product.asp?stage=save&productid=<%= productid %>" method=post>
<table cellspacing=0 cellpadding="0" border="0">

<tr>
<td>
</td>
<td>
<font face="verdana, arial" size="4" color="#000000">


<p align="left">
<% if productid=null or productid="" then %>
Tilf&oslash;j nyt produkt<font face="verdana, arial" size="2">
<% else %>

Rediger i detaljerne for <%=name%> | <%=name_uk%>
<br><font face="verdana, arial" size="2"  color="#000000">

<% end if %>

<%= msg %><br><br>
</td>
</tr>

<tr>
<td align=right valign="top"><font face="verdana, arial" size="1" color="#000000">

Navn:&nbsp;&nbsp;</font><BR></td>
<td align=left valign="top">
<font face="verdana, arial" size="1" color="<%= text %>">
<input size=20 name="name" value="<%= name %>" maxlength=100>
</td>
</tr>

<tr>
<td align=right valign="top"><font face="verdana, arial" size="1" color="#000000">

Navn (UK):&nbsp;&nbsp;</font><BR></td>
<td align=left valign="top">
<font face="verdana, arial" size="1" color="<%= text %>">
<input size=20 name="name_uk" value="<%= name_uk %>" maxlength=100>
</td>
</tr>


<tr>
<td align=right valign="top"><font face="verdana, arial" size="1" color="#000000">

Beskrivelse:&nbsp;&nbsp;</font><BR></td>
<td align=left valign="top">
<font face="verdana, arial" size="1" color="<%= text %>">
<textarea name="description" rows=6 cols=40><%= description %></textarea>
</td>
</tr>

<tr>
<td align=right valign="top"><font face="verdana, arial" size="1" color="#000000">

Beskrivelse (UK):&nbsp;&nbsp;</font><BR></td>
<td align=left valign="top">
<font face="verdana, arial" size="1" color="<%= text %>">
<textarea name="description_uk" rows=6 cols=40><%= description_uk %></textarea>
</td>
</tr>

<tr>
<td align=right valign="top"><font face="verdana, arial" size="1" color="#000000">

Kategori:&nbsp;&nbsp;</font><BR></td>
<td align=left valign="top">
<font face="verdana, arial" size="1" color="<%= text %>">
<select name="catcode" onchange="this.form.catcode_uk.value = this.options[this.selectedIndex].value;">
<% set  rscat=db.execute("select catcode, catname, catname_uk from categories order by catname")
while not rscat.eof
if rscat("catcode")=catcode then %>
<option value="<%=rscat("catcode")%>" selected><%= rscat("catname")%> (<%=rscat("catname_uk")%>)</option>
<% else %>
<option value="<%=rscat("catcode")%>"><%= rscat("catname")%> (<%=rscat("catname_uk")%>)</option>
<%end if
rscat.movenext
wend %>
</select>
</td>
</tr>
</table>
<br>
<center>
<input type=image src="images/savebutton.gif" alt="Save" name="Save" border=0>

</form>
Avatar billede roenving Novice
11. august 2003 - 15:07 #24
Du skal indsætte feltet, som skal udfyldes, altså et eller andet sted i din form (næsten ligegyldigt hvor !-)

<input type="hidden" name="catcode_uk" value="">

Så kan du få fat i den, når dit asp-script køres -- jeg vil gætte på Request("catcode_uk") ... men det ved du sikkert mere om end jeg gør !o]
Avatar billede sublimegirl Nybegynder
12. august 2003 - 08:22 #25
hmm... nu kommer fejlmeddelelsen i hvert fald ikke. Nu skal jeg bare lige se om der bliver sendt en streng med den rigtige værdi :) ... tester lige.
Avatar billede sublimegirl Nybegynder
12. august 2003 - 09:06 #26
roenving > læg et svar hvis du vil ha del i points! lortet virker sku :D
Avatar billede roenving Novice
12. august 2003 - 11:30 #27
Velbekomme '-)

-- og så fik du at vide at så automatisk kan man ikke "så at sige generere automatisk" -- feltet skal fysisk findes i koden hvis vi bruger den model ...

Man kan godt, men det er spild af gode kræfter på en form !-)
Avatar billede sublimegirl Nybegynder
12. august 2003 - 12:22 #28
Fantastish!
Avatar billede roenving Novice
12. august 2003 - 13:14 #29
-- og tak for points ;~}
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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