Avatar billede bodyguard Nybegynder
19. juni 2008 - 14:58 Der er 17 kommentarer og
2 løsninger

<select> med dage, måneder og år med automatisk selected

Hej Exp,

Jeg bruger nogle forskellige select bokse til at navigere rundt i datoer med. Jeg mangler dog bare en funktion som automatisk sætter selected ind ud fra den dato som er postet eller dagsdato.

Hvis der ikke er noget i:
dato = Request.form("dag")
maaned = Request.form("maaned")
aar = Request.form("aar")

Så skal dagsdato vælges ellers skal datoen fra request.form vises.




<select name="dag"><option value="01">1</option><option value="02">2</option><option value="03">3</option><option value="04">4</option><option value="05">5</option><option value="06">6</option><option value="07">7</option><option value="08">8</option><option value="09">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option></select>
<select name="maaned"><option value="01">Januar</option><option value="02">Februar</option><option value="03">Marts</option><option value="04">April</option><option value="05">Maj</option><option value="06" selected>Juni</option><option value="07">Juli</option><option value="08">August</option><option value="09">September</option><option value="10">Oktober</option><option value="11">November</option><option value="12">December</option></select>
<select name="aar"><option value="2007">2007</option><option value="2008" selected>2008</option><option value="2009">2009</option></select>
<input type="submit" value="<- G&aring; til dato">
Avatar billede w13 Novice
19. juni 2008 - 15:21 #1
Under knappen:

<input type="submit" value="<- Gå til dato">

kan du indsætte JavaScript-koden:

<script type="text/javascript">
function selectOption(oSelect,sValue){
    oSelect=oSelect.getElementsByTagName("option");
    for(var i=0;i<oSelect.length;i++){
        if(oSelect[i].value==sValue)oSelect[i].parentNode.selectedIndex=i;
    }
}

var iDag = "<%=Request.Form("dag")%>";
var iMaaned = "<%=Request.Form("maaned")%>";
var iAar = "<%=Request.Form("aar")%>";

if(iDag)selectOption(document.getElementById("dag"),iDag);
if(iMaaned)selectOption(document.getElementById("maaned"),iMaaned);
if(iAar)selectOption(document.getElementById("aar"),iAar);
</script>
Avatar billede w13 Novice
19. juni 2008 - 15:26 #2
Hvis det skal gøres med ASP, skal du også udskrive dine Select's med ASP.
Avatar billede bodyguard Nybegynder
19. juni 2008 - 16:35 #3
Jeg vil foretrække at det gøres med asp, kan du det?
Avatar billede w13 Novice
19. juni 2008 - 17:07 #4
Det må blive nogenlunde sådan her så:

<select name="dag">
<%For i=1 To 31
    Response.Write "<option value=""0"&i&""""
    If Request.Form("dag")="0"&i Then Response.Write " selected=""selected"""
    ">"&i&"</option>"&vbCrLf
Next%>
</select>

<select name="maaned">
<%For i=1 To 12
    Response.Write "<option value=""0"&i&""""
    If Request.Form("maaned")="0"&i Then Response.Write " selected=""selected"""
    ">"&MonthName(i)&"</option>"&vbCrLf
Next%>
</select>

<select name="aar">
<%For i=2007 To 2009
    Response.Write "<option value="""&i&""""
    If Request.Form("aar")=i Then Response.Write " selected=""selected"""
    ">"&i&"</option>"&vbCrLf
Next%>
</select>

<input type="submit" value="<- Gå til dato">
Avatar billede w13 Novice
19. juni 2008 - 17:09 #5
Hvis månedernes navne står på engelsk, skal du nok indsætte dette inden:

<%Session.LCID=1030%>
Avatar billede bodyguard Nybegynder
19. juni 2008 - 17:40 #6
cool kan du lave det sådan så året tæller to år tilbage og to år frem fra som er angivet i request.form
?
Avatar billede bodyguard Nybegynder
19. juni 2008 - 17:54 #7
Der er altså nogle fejl i dit script som jeg har rettet:
<select name="dag">
<%For i=1 To 31
    Response.Write "<option value=""0"&i&""""
        If dato=i Then Response.Write " selected=""selected"""
    Response.Write """>"&i&"</option>"&vbCrLf
Next%>
</select>

<select name="maaned">
<%For i=1 To 12
    Response.Write "<option value=""0"&i&""""
          If maaned=i Then Response.Write " selected=""selected"""
    Response.Write """>"&MonthName(i)&"</option>"&vbCrLf
Next%>
</select>

<select name="aar">
<%For i=2007 To 2009
    Response.Write "<option value="""&i&""""
        If aar=i Then Response.Write " selected=""selected"""
    Response.Write """>"&i&"</option>"&vbCrLf
Next%>
</select>


Er det muligt at lave det sådan så måneden starter med et stort bogstav?
Avatar billede w13 Novice
19. juni 2008 - 17:58 #8
<select name="dag">
<%For i=1 To 31
    Response.Write "<option value=""0"&i&""""
        If dato=i Then Response.Write " selected=""selected"""
    Response.Write """>"&i&"</option>"&vbCrLf
Next%>
</select>

<select name="maaned">
<%For i=1 To 12
    Response.Write "<option value=""0"&i&""""
          If maaned=i Then Response.Write " selected=""selected"""
    Response.Write """>"&UCase(Left(MonthName(i),1))&Mid(MonthName(i),1)&"</option>"&vbCrLf
Next%>
</select>

<select name="aar">
<%For i=aar-2 To aar+2
    Response.Write "<option value="""&i&""""
        If aar=i Then Response.Write " selected=""selected"""
    Response.Write """>"&i&"</option>"&vbCrLf
Next%>
</select>
Avatar billede bodyguard Nybegynder
19. juni 2008 - 18:35 #9
Næ nej.... når man kører dit script ser SOURCE CODEN sådan her ud:

<select name="dag">
<option value="01"">1</option>
<option value="02"">2</option>
<option value="03"">3</option>
<option value="04"">4</option>
<option value="05"">5</option>
<option value="06"">6</option>
<option value="07"">7</option>
<option value="08"">8</option>
<option value="09"">9</option>
<option value="010"">10</option>
<option value="011"">11</option>
<option value="012"">12</option>
<option value="013"">13</option>
<option value="014"">14</option>
<option value="015"">15</option>
<option value="016"">16</option>
<option value="017"">17</option>
<option value="018"">18</option>
<option value="019" selected="selected"">19</option>
<option value="020"">20</option>
<option value="021"">21</option>
<option value="022"">22</option>
<option value="023"">23</option>
<option value="024"">24</option>
<option value="025"">25</option>
<option value="026"">26</option>
<option value="027"">27</option>
<option value="028"">28</option>
<option value="029"">29</option>
<option value="030"">30</option>
<option value="031"">31</option>

</select>

<select name="maaned">
<option value="01"">Jjanuar</option>
<option value="02"">Ffebruar</option>
<option value="03"">Mmarts</option>
<option value="04"">Aapril</option>
<option value="05"">Mmaj</option>
<option value="06" selected="selected"">Jjuni</option>
<option value="07"">Jjuli</option>
<option value="08"">Aaugust</option>
<option value="09"">Sseptember</option>
<option value="010"">Ooktober</option>
<option value="011"">Nnovember</option>
<option value="012"">Ddecember</option>

</select>

<select name="aar">
<option value="2006"">2006</option>
<option value="2007"">2007</option>
<option value="2008" selected="selected"">2008</option>
<option value="2009"">2009</option>
<option value="2010"">2010</option>

</select>


<input type="submit" value="<- G&aring; til dato">

så der er en fejl med "" og dag og måned får et 0 for meget.
Avatar billede bodyguard Nybegynder
19. juni 2008 - 18:36 #10
...og månederne får et forbogstav for meget...

For at finde datoen bruger jeg dette stk. kode oven over "dato navigationen"


if Request.form("dag") = "" OR Request.form("maaned") = "" OR Request.form("aar") = "" then
    dato = Day(Now)
    maaned = Month(Now)
    aar = Year(Now)
else
    dato = Request.form("dag")
    maaned = Request.form("maaned")
    aar = Request.form("aar")
end if
Avatar billede w13 Novice
19. juni 2008 - 18:48 #11
Så prøv:

<select name="dag">
<%For i=1 To 31
    If i<10 Then iTmp="0"&i Else iTmp=i
    Response.Write "<option value=""0"&iTmp&""""
        If dato=iTmp Then Response.Write " selected=""selected"""
    Response.Write ">"&i&"</option>"&vbCrLf
Next%>
</select>

<select name="maaned">
<%For i=1 To 12
    Response.Write "<option value=""0"&iTmp&""""
          If maaned=iTmp Then Response.Write " selected=""selected"""
    Response.Write ">"&UCase(Left(MonthName(i),1))&Mid(MonthName(i),2)&"</option>"&vbCrLf
Next%>
</select>

<select name="aar">
<%For i=aar-2 To aar+2
    Response.Write "<option value="""&i&""""
        If aar=i Then Response.Write " selected=""selected"""
    Response.Write ">"&i&"</option>"&vbCrLf
Next%>
</select>
Avatar billede bodyguard Nybegynder
19. juni 2008 - 19:26 #12
Nu er den da helt gået i fisk....

Til at starte med så laver den ikke selected i måned, når man så poster formen får man denne source kode:
<select name="dag">
<option value="001">1</option>
<option value="002">2</option>
<option value="003">3</option>
<option value="004">4</option>
<option value="005">5</option>
<option value="006">6</option>
<option value="007">7</option>
<option value="008">8</option>
<option value="009">9</option>
<option value="010">10</option>
<option value="011">11</option>
<option value="012">12</option>
<option value="013">13</option>
<option value="014">14</option>
<option value="015">15</option>
<option value="016">16</option>
<option value="017">17</option>
<option value="018">18</option>
<option value="019">19</option>
<option value="020">20</option>
<option value="021">21</option>
<option value="022">22</option>
<option value="023">23</option>
<option value="024">24</option>
<option value="025">25</option>
<option value="026">26</option>
<option value="027">27</option>
<option value="028">28</option>
<option value="029">29</option>
<option value="030">30</option>
<option value="031">31</option>

</select>

<select name="maaned">
<option value="031">Januar</option>
<option value="031">Februar</option>
<option value="031">Marts</option>
<option value="031">April</option>
<option value="031">Maj</option>
<option value="031">Juni</option>
<option value="031">Juli</option>
<option value="031">August</option>
<option value="031">September</option>
<option value="031">Oktober</option>
<option value="031">November</option>
<option value="031">December</option>

</select>

<select name="aar">
<option value="2006">2006</option>
<option value="2007">2007</option>
<option value="2008">2008</option>
<option value="2009">2009</option>
<option value="2010">2010</option>

</select>


Og den kan nu ikke finde noget som helst i databasen...
Avatar billede w13 Novice
19. juni 2008 - 19:46 #13
Hov ja:
    Response.Write "<option value=""0"&iTmp&""""
skal være:
    Response.Write "<option value="""&iTmp&""""
begge steder.

Hvad skulle findes i databasen???
Avatar billede w13 Novice
19. juni 2008 - 19:47 #14
Vi prøver lige igen så, forhåbentlig uden slåfejl denne gang:

<select name="dag">
<%For i=1 To 31
    If i<10 Then iTmp="0"&i Else iTmp=i
    Response.Write "<option value="""&iTmp&""""
        If dato=iTmp Then Response.Write " selected=""selected"""
    Response.Write ">"&i&"</option>"&vbCrLf
Next%>
</select>

<select name="maaned">
<%For i=1 To 12
    If i<10 Then iTmp="0"&i Else iTmp=i
    Response.Write "<option value="""&iTmp&""""
          If maaned=iTmp Then Response.Write " selected=""selected"""
    Response.Write ">"&UCase(Left(MonthName(i),1))&Mid(MonthName(i),2)&"</option>"&vbCrLf
Next%>
</select>

<select name="aar">
<%For i=aar-2 To aar+2
    Response.Write "<option value="""&i&""""
        If aar=i Then Response.Write " selected=""selected"""
    Response.Write ">"&i&"</option>"&vbCrLf
Next%>
</select>
Avatar billede bodyguard Nybegynder
20. juni 2008 - 01:26 #15
Det vil stadigt ikke helt...

Hvis man loader scriptet uden at poste en dato og aar korrekt selected, men maaned laver ingen selected.

hvis man poster formen kommer der selected i korrekt maaned men ingen selected i hverken dato eller aar...


Det er meget mystisk....
Avatar billede bodyguard Nybegynder
20. juni 2008 - 01:53 #16
Nu har jeg skilt din kode lidt ad og fået det til at virke :)

- Tak for hjælpen.



<%
'************************************************ Dag
Response.Write "<select name=""dag"">"&vbCrLf
For i=1 To 31
    If i < 10 Then
        iTmp = "0"&i
    Else
        iTmp = i
    End if
%>
<option value="<%= iTmp %>" <% If cint(dato) = cint(iTmp) Then %> selected="selected"<% End If %>><%= i %></option>
<%
    Response.Write ""&vbCrLf
Next
Response.Write "</select>"&vbCrLf


'************************************************ Måned
Response.Write "<select name=""maaned"">"&vbCrLf
For i=1 To 12
    If i < 10 Then
        iTmp = "0"&i
    Else
        iTmp = i
    End if
%>
<option value="<%= iTmp %>" <% If cint(maaned) = cint(iTmp) Then %> selected="selected"<% End If %>><%= UCase(Left(MonthName(i),1))&Mid(MonthName(i),2) %></option>
<%
    Response.Write ""&vbCrLf
Next
Response.Write "</select>"&vbCrLf


'************************************************ ÅR
Response.Write "<select name=""aar"">"&vbCrLf
For i=aar-2 To aar+2
%>
<option value="<%= i %>" <% If cint(aar) = cint(i) Then %> selected="selected"<% End If %>><%= i %></option>
<%
    Response.Write ""&vbCrLf
Next
Response.Write "</select>"&vbCrLf

'************************************************ Submit knap
Response.Write "<input type=""submit"" value=""<- G&aring; til dato"">"&vbCrLf
%>
Avatar billede w13 Novice
20. juni 2008 - 08:09 #17
Hvad hvis du retter:
          If maaned=iTmp Then Response.Write " selected=""selected"""
til:
          If CInt(maaned)=CInt(iTmp) Then Response.Write " selected=""selected"""

Er måned så altid korrekt selected?
Avatar billede w13 Novice
20. juni 2008 - 08:09 #18
Sorry, så ikke dit sidste svar. =)
Avatar billede bodyguard Nybegynder
01. juli 2008 - 02:43 #19
kom frisk med et svar :)
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