Avatar billede jss Nybegynder
14. august 2003 - 11:43 Der er 10 kommentarer og
1 løsning

Markere bestemte checkboxes dynamisk

Sidder og tumler med en udfordring. Jeg har lavet en checkbox-formular, der "fodres" vha. en database. De markerede checkboxe anvendes til at opbygge en SQL-sætning og formen submitter til samme side med POST.
Det jeg er ude efter er egentlig 2 ting.

1) Når man klikker sig ind på siden med formularen, skal 2 bestemte checkboxes på forhånd være markeret (en slags default-indstilling).

2) Når brugeren har markeret en eller flere checkboxes og submitter formen, så skal de(n) valgte checkbox(es) stadig være markeret. Som det er nu, forsvinder markering(erne) når man submitter formen.

Er der nogen der har en god idé ????

* kode formular
<form action='oversigt.asp' method="POST" name="oversigt">
        <td><p><b>Vælg opgavetype:&nbsp;&nbsp;&nbsp;</b></td>

        <%
        ' Henter data
        strSQL = "Select * From Opgavetype Where ID > 1 Order by Typenr Asc"
        Set rs = Conn.Execute(strSQL)

        Do until rs.eof
            Response.Write "<td><p>" & rs("Type_kort_tekst") & ":</td><td>" _
                & "<input type=""checkbox"" name="& rs("beskrivelse") &" value="& rs("typenr") &"" _
                  & ">&nbsp;&nbsp;</td>"
            rs.movenext
        loop
        Set rs = nothing
        %>

        <td></td><td><input type="submit" name="submit" value="Vælg"></tr>
    </form>
Avatar billede mm12010 Nybegynder
14. august 2003 - 12:15 #1
er ikke siker på at denne går i VB men prøv:

        Do until rs.eof
            %>
            <td><p><%=rs("Type_kort_tekst")%>:</td>
            <td><input type="checkbox" name="<%=rs("beskrivelse")%>" value="<%=rs("typenr")%>"<%=if Request.Form(rs("beskrivelse")) = rs("typenr") then " checked" end if%>></td>
            <%
            rs.movenext
        loop
Avatar billede mm12010 Nybegynder
14. august 2003 - 12:18 #2
hvis det dur kan du bruge denne på de boxe der skal være chacked som default:

<input type="checkbox" name="<%=rs("beskrivelse")%>" value="<%=rs("typenr")%>"<%=if Request.Form(rs("beskrivelse")) = rs("typenr") OR Request.ServerVariables("REQUEST_METHOD") <> "POST" then " checked" end if%>>
Avatar billede langthjem Nybegynder
14. august 2003 - 12:18 #3
<%=if Request.Form(rs("beskrivelse")) = rs("typenr") then " checked" end if%> virker helt sikkert ikke, men med en lille ændring gør den:
<%if Request.Form("typenr") = rs("typenr") Then Response.Write " checked"%>
Avatar billede mm12010 Nybegynder
14. august 2003 - 12:21 #4
i JavaScript ville de give det samme resultat :o)
Avatar billede jss Nybegynder
14. august 2003 - 13:59 #5
hmmm - virker tilsyneladende ikke.

Men JavaScript - kan du hjælpe mig lidt på vej med script ?
Avatar billede mm12010 Nybegynder
14. august 2003 - 14:08 #6
asp i javascript <%@LANGUAGE="JAVASCRIPT" CODEPAGE="1252"%>
Avatar billede jss Nybegynder
14. august 2003 - 14:24 #7
Lige tilbage til dit asp-forslag. Det virker delvist, hvis jeg ændrer lidt i formularen; name="& rs("beskrivelse") &"  --> name="typenr" - altså laver navnet statisk i stedet for dynamisk (fra database). Det virker kun delvist idet jeg kun "må" markere 1 checkbox, for at den kan "huske" efter submit.
Avatar billede mm12010 Nybegynder
14. august 2003 - 14:29 #8
?
Avatar billede jss Nybegynder
14. august 2003 - 15:33 #9
mm12010 - smid lige et svar, det lykkedes (se kode nedenfor)



    <form action='oversigt.asp' method="POST" name="oversigt">
        <td><p><b>Vælg opgavetype:&nbsp;&nbsp;&nbsp;</b></td>

        <%
        ' Henter data
        strSQL = "Select * From Opgavetype Where ID > 1 Order by Typenr Asc"
        Set rs = Conn.Execute(strSQL)

        Do until rs.eof
            Response.Write "<td><p>" & rs("Type_kort_tekst") & ":</td><td>" _
              & "<input type=""checkbox"" name="""& rs("beskrivelse") &""" value="""& rs("typenr") &""""
              '& "<input type=""checkbox"" name=""type"& rs("typenr") &""" value="""& rs("typenr") &""""
              for each item in Request.Form()
                if Request.Form.key(item) = rs("beskrivelse") Then
                      Response.Write " checked"
                else
                      'Response.Write " ØV"
                end if
              next
              Response.Write ">&nbsp;&nbsp;</td>"
            rs.movenext
        loop
        Set rs = nothing
        %>

        <td></td><td><input type="submit" name="submit" value="Vælg"></tr>
    </form>
Avatar billede jss Nybegynder
14. august 2003 - 15:37 #10
Det er for .. next løkken der gør det (har slettet linjen Response.Write " ØV" i min udgave :-)

Anyway - du skal have lidt points for din hjælp.
Avatar billede mm12010 Nybegynder
14. august 2003 - 15:38 #11
takker :o)
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