Avatar billede webweaver Praktikant
23. september 2010 - 18:24 Der er 7 kommentarer og
1 løsning

onSelect på <option> tag

Halløj dudes :)

Min stærke side er ikke JavaScript. Jeg står og skal bruge lidt af det til en bestillings-form. Jeg har en select. Når jeg vælger et enkelt punkt på listen, skal jeg have den til at udføre "noget". I det her tilfælde skjule eller inaktivere en anden select længere nede i formen. At inaktivere den er formentlig nemmest, da der så "bare" skal indsættes "disabled" ind efter <select ... Men at skjule den hele er self. mere lir :)

Hvad er mulighederne for det? Har kigget lidt på onSelect og umiddelbart burde det være muligt, men alligevel kan jeg ikke helt gennemskue det. Der skal vel laves en form for funktion?

Håber at I kan hjælpe :-)

Mvh. Lasse Jensen
Avatar billede jokkejensen Novice
23. september 2010 - 18:29 #1
jeg tror den hedder onchange den event du leder efter.

Vil du skjule noget:

<select onchange="change(this)" id="first" />

function change(elm)
{
if(elm.id = 'first')
document.getElementById('sek').style.display = 'none';
}
Avatar billede webweaver Praktikant
23. september 2010 - 20:25 #2
Umiddelbart ikke lige noget jeg kan få til at fungere.

Hvor vil du placere <select onchange="change(this)" id="first" />? Det ser næsten ud som om det er den select som skal skjules?

Hvor får den "besked" fra om hvornår den skal skjules?
Altså fra den første select?

Jeg har følgende,

<select size="1" name="boligType">
                       
<option>Hus, 1 plan</option>
<option>Hus, 2 plan</option>
<option>Rækkehus</option>
<option>Lejlighed op til 2. sal</option>
<option>Lejlighed over 2. sal</option> // Hvis dette felt vælges, skal den select nedenunder forsvinde/skjules.
<option>Andet</option>
                       
</select>

<select size="1" name="hyppighed"> // Den som skjules...
   
<option>Kun denne ene gang</option>
<option>Ugentligt</option>
<option>Månedligt</option>
<option>Hver kvartal</option>
<option>Hver halve år</option>
                           
</select>
Avatar billede intenz Novice
24. september 2010 - 12:56 #3
Der er flere ting galt. Du er nødt til at give hver option i din select en value, i hvert fald dem der 'skal gøre noget', så du kan genkende at de er valgt. Og så bruge onchange som der bliver nævnt.

Noget i stil med:

<script>
function selectChange(e) {
  if (e.value == 'over2') {
    document.getElementById('second').style.display = 'hidden';
  } else {
    document.getElementById('second').style.display = 'block';
  }
}
</script>

<select size="1" name="boligType" id="first" onchange="selectChange(this);">
                       
<option>Hus, 1 plan</option>
<option>Hus, 2 plan</option>
<option>Rækkehus</option>
<option>Lejlighed op til 2. sal</option>
<option value="over2">Lejlighed over 2. sal</option> // Hvis dette felt vælges, skal den select nedenunder forsvinde/skjules.
<option>Andet</option>
                       
</select>

<select size="1" name="hyppighed" id="second"> // Den som skjules...
   
<option>Kun denne ene gang</option>
<option>Ugentligt</option>
<option>Månedligt</option>
<option>Hver kvartal</option>
<option>Hver halve år</option>
                           
</select>
Avatar billede webweaver Praktikant
25. september 2010 - 23:22 #4
Det ser ikke ud til at virke? Har prøvet mig lidt frem med det. Hvis man smider det direkte fra din post af her og ind, fungerer det ikke for mig. Hverken i IE eller FF. Dog registrerer den block elementet ser det ud til, for hvis jeg vælger alle andre end den enkelte, så laver den et mellemrum nedenunder select'en. Vælger man den med en value, sker der intet overhovedet? Hvorfor så det?
Avatar billede webweaver Praktikant
25. september 2010 - 23:27 #5
Ahh ser ud til at virke nu. 'hidden' erstattes af 'none'.
Avatar billede webweaver Praktikant
25. september 2010 - 23:42 #6
Er der et andet element end block som kan bruges til samme effekt? Har problemer med at den indskyder en "linie med luft" i designet, når det bliver aktiveret.
Avatar billede intenz Novice
27. september 2010 - 01:31 #7
Avatar billede webweaver Praktikant
27. september 2010 - 14:48 #8
Super, så virker det som jeg vil have det til :)

Endte ud i følgende,

    <script>               
               
                function selectChange(e) {                   
               
                    if (e.value == 'over2') {
                       
                        document.getElementById('hideThis').style.display = 'none';
                        document.getElementById('hideThis2').style.display = 'none';
                        document.getElementById('hideThis3').style.display = 'none';
                       
                    } else {
                   
                        document.getElementById('hideThis').style.display = 'block';
                        document.getElementById('hideThis2').style.display = 'inline';
                        document.getElementById('hideThis3').style.display = 'run-in;';
                   
                    }
               
                }               
                   
    </script>

Tak for hjælpen :)
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