Avatar billede dsjk Novice
21. september 2001 - 17:14 Der er 8 kommentarer og
1 løsning

2 dropdown boxe

Hej

Kan nogen hjælpe mig med et lille problem.

jeg skal have 2 dropdown boxe, hvor af den ene skal have 4 årstal (koden er forneden), og den anden skal have nogle bestemte datoer (links) alt efter hvilket årstal man vælger.
ex. 
vælges 1998 i box 1 kan man vælge mellem 6. november og 21. december i box 2
vælges 1999 kan man vælge mellem 6. februar, 19. marts samt flere i box 2

Her er box 1:

<select name=\"selectName\" size=\"1\">
  <option value=\"one\" selected>&Aring;r</option>
  <option value=\"two\">1998</option>
  <option value=\"three\">1999</option>
  <option value=\"four\">2000</option>
  <option value=\"five\">2001</option>
</select>

Hvordan laver jeg box 2?

DSJK
Avatar billede jakoba Nybegynder
21. september 2001 - 18:42 #1
lav en klar od præcis liste over hvad indholdet i box2 skal være for hver aktiv valgmulighed i boks-1, skal values også ændres? Hvad skal der ske hvis brugeren vælger \'År\' (første punkt)

her gør jeg det ønskede, på baggrund af radioknapper.
http://hjem.get2net.dk/Jakob.Aggernaes/temp/exp107085.html

funktionen  setMenu( ... ) opstiller ny menu.

mvh JakobA
Avatar billede dsjk Novice
21. september 2001 - 23:25 #2
Som indledning vil jeg henvise til http://densortejakke.homepage.dk/referat.htm
Hvor du kan se datoerne for alle 4 år.

Altså når man i box 1 vælger 1998 vil der være følgende valg muligheder i box 2
6. November
21. December

Vælger man en af disse går siden ned til den valgte dato, og man kan læse referater.

Vælger man 1999 i box 1
vil der være 6 valg muligheder i box 2
6. Februar
19. Marts
6. Juni
6. August
15. Oktober
1 års jubilæum

Håber det er lidt mere forståeligt?
er det ikke, mere eller mindre, lige meget hvad der står i values?

DSJK
Avatar billede jakoba Nybegynder
22. september 2001 - 00:00 #3
Er der nogen der har tid at lave det til ham?
Det skulle være ret nemt at klippeklistre udfra de 2 links ovenfor.
Avatar billede Slettet bruger
22. september 2001 - 12:43 #4
Er det noget á la det her (?):

<script>
datoer98 = new Array(\"6. november\",\"21. december\");
datoer99 = new Array(\"6. februar\",\"19. marts\",\"6. juni\",\"6. august\",\"15.oktober\",\"1 års jubilæum\"); //Datoer i 98 og 99

links98 = new Array(\"nov6.hmtml\",\"dec21.html\");
links99 = new Array(\"feb6.html\",\"mar19.html\",\"juni6.html\",\"aug6.html\",\"kot15.html\",\"1aj.html\"); //Links, der svarer til datoerne ovenover

function setDato(selecten,frm) {
ind = selecten.selectedIndex;
laengde98 = datoer98.length + 1;
laengde99 = datoer99.length + 1;
if (ind == 1) {
frm.box2.length = datoer98.length;
for (i = 1; i < laengde98; i++) {
frm.box2.options[i].text = datoer98[i - 1];
}
}
else if (ind == 2) {
frm.box2.length = datoer99.length;
for (i = 1; i < laengde99; i++) {
frm.box2.options[i].text = datoer99[i - 1];
}
}
}

function gaTil() {
box1ind = selecten.selectedIndex;
box2ind = selecten.selectedIndex;
if (box1ind == 1) {
self.location.href = links98[box2ind - 1];
}
if (box1ind == 2) {
self.location.href = links99[box2ind - 1];
}
}
</script>

Og så formen:

<select name=\"selectName\" onChange=\"setDato(this,this.form)\">
  <option value=\"one\" selected>&Aring;r</option>
  <option value=\"two\">1998</option>
  <option value=\"three\">1999</option>
</select>
<select name=\"box2\" onChange=\"gaTil()\">
  <option value=\"ligegyldigt\">Datoer
</select>
Avatar billede Slettet bruger
22. september 2001 - 12:53 #5
Ups, der var en masse fejl i det script! Dette virker (HTML\'et er også rette lidt):

<script>
datoer98 = new Array(\"6. november\",\"21. december\");
datoer99 = new Array(\"6. februar\",\"19. marts\",\"6. juni\",\"6. august\",\"15.oktober\",\"1 års jubilæum\"); //Datoer i 98 og 99

links98 = new Array(\"nov6.hmtml\",\"dec21.html\");
links99 = new Array(\"feb6.html\",\"mar19.html\",\"juni6.html\",\"aug6.html\",\"kot15.html\",\"1aj.html\"); //Links, der svarer til datoerne ovenover

function setDato(selecten,frm) {
ind = selecten.selectedIndex;
laengde98 = datoer98.length + 1;
laengde99 = datoer99.length + 1;
if (ind == 1) {
frm.box2.length = laengde98;
for (i = 1; i < laengde98; i++) {
frm.box2.options[i].text = datoer98[i - 1];
}
}
else if (ind == 2) {
frm.box2.length = laengde99;
for (i = 1; i < laengde99; i++) {
frm.box2.options[i].text = datoer99[i - 1];
}
}
}

function gaTil(frm) {
box1ind = frm.selectName.selectedIndex;
box2ind = frm.box2.selectedIndex;
if (box1ind == 1 && box2ind != 0) {
self.location.href = links98[box2ind - 1];
}
if (box1ind == 2 && box2ind != 0) {
self.location.href = links99[box2ind - 1];
}
}
</script>

HTML:

<form>
<select name=\"selectName\" onChange=\"setDato(this,this.form)\">
  <option value=\"one\" selected>&Aring;r</option>
  <option value=\"two\">1998</option>
  <option value=\"three\">1999</option>
</select>
<select name=\"box2\" onChange=\"gaTil(this.form)\">
  <option value=\"ligegyldigt\">Datoer
</select>
</form>

P.S. Dette script virker kun for 1998 og 1999, for det er ligesom det, jeg tror, du vil have. Hvis jeg tager fejl i den konklusion, så skal scriptet bare ændres lidt, så bare klag til mig! :-)
Avatar billede dsjk Novice
23. september 2001 - 10:58 #6
Jeg takker mange gange...

lige et lille tillægsspørgsmål:

Kan man sætte en fast bredde på boxen?
i såfald hvordan?

DSJK
Avatar billede dsjk Novice
23. september 2001 - 11:34 #7
Og endnu et tillægsspørgsmål:

Det virker ikke i Opera?
Når man skifter år, skulle box 2 gerne \"nulstilles\" altså, der skal komme til at stå og være markeret \"Datoer\" i den og ikke en dato?

DSJK
Avatar billede Slettet bruger
24. september 2001 - 10:11 #8
Du kan vel bruge CSS til at sætte en fast bredde på boxen, fx:
<select name=\"box2\" onChange=\"gaTil(this.form)\" style=\"width:100;\">
(Jeg er ikke helt sikker)

Jeg kender desværre ikke meget til Opera... Du kan evt. spørge Jakoba!

Hvis box2 skal nulstilles, så gør sådan her:

function setDato(selecten,frm) {
ind = selecten.selectedIndex;
laengde98 = datoer98.length + 1;
laengde99 = datoer99.length + 1;
if (ind == 1) {
frm.box2.length = laengde98;
for (i = 1; i < laengde98; i++) {
frm.box2.options[i].text = datoer98[i - 1];
frm.box2.selectedIndex = 0;
}
}
else if (ind == 2) {
frm.box2.length = laengde99;
for (i = 1; i < laengde99; i++) {
frm.box2.options[i].text = datoer99[i - 1];
frm.box2.selectedIndex = 0;
}
}
}
Avatar billede Slettet bruger
24. september 2001 - 10:13 #9
Nej, det kan gøres én linje hurtigere:

function setDato(selecten,frm) {
ind = selecten.selectedIndex;
laengde98 = datoer98.length + 1;
laengde99 = datoer99.length + 1;
if (ind == 1) {
frm.box2.length = laengde98;
for (i = 1; i < laengde98; i++) {
frm.box2.options[i].text = datoer98[i - 1];
}
}
else if (ind == 2) {
frm.box2.length = laengde99;
for (i = 1; i < laengde99; i++) {
frm.box2.options[i].text = datoer99[i - 1];
}
}
frm.box2.selectedIndex = 0;
}
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