Avatar billede d797fni Nybegynder
22. marts 2004 - 11:00 Der er 26 kommentarer og
1 løsning

hent checkbox id

Hej

Jeg er i gang med at lave noget der ligner et "indkøbssystem" blot med documenter.

Brugeren skal kunne vælge et antal dokumenter og tilføje dem til en dynamisk liste (listen og funktionen til at tilføje har jeg i en dll)

Jeg skal blot løbe alle checkboxe igennem og undersøge hvilke brugeren har valgt og så tilføje boxens id til listen.

Jeg ved bare ikke hvor mange checkboxe der er, så den skal undersøge hvor mange checkboxe der er på siden og så se hvilke der er checked. Dernæst evt køre en løkke med list.AddNew (id)

Kan jeg få lidt hjælp til at lave en funktion der løber alle boxene igennem og ser om de er checked og hvis de er checked så list.AddNew.

(Siden er opbygget af mange sider, og iframes. Fra main skal den undersøge i en iframe)
Avatar billede nute Nybegynder
22. marts 2004 - 11:44 #1
det du kan gøre, er at prefixe alle dine checkboxes med fx 'chk' og derefter loope igennem dit formular sådan:

for each item in Request.Form ' hvis du bruger 'GET' skal du have 'Request.QueryString'
    If( InStr( item, "chk" ) = 1 ) then
        ' Det er en checkbox
        list.AddNew( item )
    end if
next

du skal huske at det er kun de checkboxes der er checked der bliver sendt med over til den næste side

/nute
Avatar billede d797fni Nybegynder
22. marts 2004 - 11:48 #2
hmmm, god ide.

Er det rigtigt forstået at jeg i "name" sætter chk foran alle ?

hvad er item ?
Avatar billede tubber Juniormester
22. marts 2004 - 11:56 #3
Er det en optimal måde ?

Den vil kun være fin hvis han ikke skal bruge de enkelte checkboxe enkeltvis ?
ville navngive dem anderledes......

ChkBox 1 Name=1
ChkBox 2 Name=2

i = 1
Do while i < x 'x = højeste nummer chkbox
If( InStr( item, i ) = 1 ) then
        ' Det er en checkbox
        list.AddNew( item )
        i = i + 1
Else:
        i = i + 1
end if
Loop

Noget der ligner det der måske........
Avatar billede tubber Juniormester
22. marts 2004 - 11:57 #4
det er ikke for at kassere nute's måde, nute plejer at komme med gode svar :)

Nok mere fordi jeg ikke helt forstår den og lige prøver at lære lidt :)
Avatar billede d797fni Nybegynder
22. marts 2004 - 12:00 #5
Tubber:

Problemet er blandt andet at jeg ikke kender antallet at checkboxe, det er forskellige fra gang til gang
Avatar billede tubber Juniormester
22. marts 2004 - 12:03 #6
hmmm ja kan jeg godt se det giver et problem.....

Hvordan forskelligt ? ud fra hvad brugeren har valgt på forrige side ?
Avatar billede d797fni Nybegynder
22. marts 2004 - 12:06 #7
Ja, evt kunne jeg få fat i antallet af dokumenter den har skrevet i draw.asp i min iframe, men jeg ved ikke lige hvordan jeg for fat i en variable fra en anden side.
Avatar billede tubber Juniormester
22. marts 2004 - 12:10 #8
du bruger igen post methoden og request.querystring......

er ikke helt inde i det men har det på noget jeg har lavet før prøver lige at finde det....
Avatar billede d797fni Nybegynder
22. marts 2004 - 12:16 #9
Dette giver mig antallet af checkboxe i iframen (når jeg kalder alle boxe chk)

i=0
For Each item In Request.Form("chk")
    i=i+1
  Next
Response.Write i
Avatar billede tubber Juniormester
22. marts 2004 - 12:19 #10
Jo men det jeg ikke forstår er at alle chk boxe kan hedde det samme uden at skabe problemer
Avatar billede d797fni Nybegynder
22. marts 2004 - 12:20 #11
de kan jo have forskelligt id
Avatar billede d797fni Nybegynder
22. marts 2004 - 12:21 #12
hvad inderholder værdien item og hvad kan jeg få af info ?

Kan jeg få checkboxens id ? (det er det jeg skal bruge)
Avatar billede nute Nybegynder
22. marts 2004 - 12:31 #13
d797fni >> dine checkboxer hedder *ikke* det samme. læs hvad jeg skriver, og du vil se at jeg skriver:

" ... er at prefixe alle dine ... "

med andre ord, så sætter du chk *foran* det navn du egentlig har på dine checkboxer:

<input type="checkbox" name="chkNummer1">
<input type="checkbox" name="chkNummer2">
<input type="checkbox" name="chkNummer3">

når du så løber dit formular igennem, og du støder på et felt der starter med 'chk', så ved du at det er en checkbox.

prøv dette eksempel, og du vil se hvad jeg mener:

<%@language="vbscript"%>
<%
for each item in Request.Form
    Response.Write( "hehe<br>" )
    If( InStr( item, "chk" ) = 1 ) then
        ' Det er en checkbox
        Response.Write( item & "<br>" )
    end if
next
%>
<form id="frm" action="?" method="post">
<input type="checkbox" name="chk_1" value="1">
<input type="checkbox" name="chk_2" value="2">
<input type="checkbox" name="chk_3" value="3">
<input type="submit">
</form>

/nute
Avatar billede d797fni Nybegynder
22. marts 2004 - 12:40 #14
Ja tak. Det hjalp.

Hvordan får jeg skrevet checkboxens id?

Til hver checkbox skal høre en objectid som er på 13 tal og bogstaver som er unikt for det dokument (således det kan genfindes i databasen)
Avatar billede tubber Juniormester
22. marts 2004 - 12:46 #15
<form id="frm" action="?" method="post">
<input type="checkbox" name="chk0123456789ABC" value="1">
<input type="checkbox" name="chk123456789ABCD" value="2">
<input type="checkbox" name="chk23456789ABCDE" value="3">
<input type="submit">
</form>

Så skal du vel bare læse de sidste 13 karaktere......??
Avatar billede d797fni Nybegynder
22. marts 2004 - 12:51 #16
tubber:

Ja, jeg tænkte det samme, men det er en lidt bøvlet måde at gøre det på. Det må kunne gøres nemmere.
Avatar billede tubber Juniormester
22. marts 2004 - 12:53 #17
Ved ikke om det er valid men:
<input ID="23456789ABCDE" type="checkbox" name="chk23456789ABCDE" value="3">

men ellers er det Str = Right(Str,13) for at tage de sidste 3 tegn :)
Avatar billede tubber Juniormester
22. marts 2004 - 12:54 #18
Og takker til nute :) nu er jeg med på det du skrev læste det også som d797fni :(
Avatar billede nute Nybegynder
22. marts 2004 - 12:54 #19
du skriver vel ud dine checkboxer fra databasen ? så skal du jo bare skrive dem ud i en loop:

SQL = "select * from tabel"
Set RS = Conn.Execute( SQL )
while not RS.EOF
    Response.Write( "<input type=""checkbox"" name=""" & RS("objectid") & """ value=""" & RS("dinværdi") & """>" )
    RS.MoveNext
wend

???
Avatar billede d797fni Nybegynder
22. marts 2004 - 13:00 #20
Jo jeg skriver object id'et ud fra databasen.

Når brugeren klikker et dokument af, så skal object id'et gemmes i mit array.

Nå alle dokumenter er valgt skal dokumenterne sendes til en modtager, hvor man hente selve dokumentet i databasen vhja object id'et.

Derfor skal jeg bruge et id/name/value whatever bare det indeholder object id'et.
Avatar billede nute Nybegynder
22. marts 2004 - 13:07 #21
så ville jeg have løst det som jeg har foreslået:

1) skriv ud dine checkboxer via en loop (som postet)
2) prefix dine checkboxer med 'chk'
3) når du skal finde hvilke documenter som er valgt, så kan du på modtagersiden bruge det script jeg postet til at starte med, men med denne lille ændring:

for each item in Request.Form ' hvis du bruger 'GET' skal du have 'Request.QueryString'
    If( InStr( item, "chk" ) = 1 ) then
        ' Det er en checkbox
        strDocument = MID( item, 4 )
        list.AddNew( strDocument )
    end if
next

Her ligger så objectid'et i variabelen 'strDocument'

/nute
Avatar billede d797fni Nybegynder
22. marts 2004 - 13:10 #22
Jeg prøver efter frokost !! Det lyder som en god løsning !
Avatar billede tubber Juniormester
22. marts 2004 - 13:40 #23
Lige et spg:

MID( item, 4 ) tager fra 4. karater og til slut ?
altså i dette tilfælde det sammen som Right(item, 13) ?
Avatar billede d797fni Nybegynder
22. marts 2004 - 14:03 #24
Det fungerer !

Kanon, nu skal jeg bare igang med at opdatere en <div> hvor der står noget om antallet items i mit array
Avatar billede nute Nybegynder
22. marts 2004 - 14:08 #25
tubber >> ja, det er det samme ... eller ... same same, but different ;o] hvis du nu, af en eller anden grund har 14 tegn i din streng, så vil jo ikke det sidste tegn komme med, når du bruger right. ved at bruge Mid, så tager den alle tegn med, minus de 3 første ...

d797fni >> fino ... :o]

/nute
Avatar billede tubber Juniormester
22. marts 2004 - 14:23 #26
Se så blev man klogere :)
Avatar billede nute Nybegynder
22. marts 2004 - 14:24 #27
d797fni >> takker :-)
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