Avatar billede Slettet bruger
20. juli 2010 - 12:10 Der er 6 kommentarer og
1 løsning

Dynamisk selectbox

Hej eksperter.

Jeg skal hen og lave en selectbox med flere options.

Mit spørgsmål er så:
Hvordan laver jeg så, hvis man vælger én bestemt options, så viser den nedenunder et text-input?
Forestiller mig noget ala display: block/none.

Kodeeksempel:
<select name='reference'>
  <option value='1'>Jobportal</option>
  <option value='2'>Facebook</option>
  <option value='3'>En ven</option>
  <option value='4'>Andet</option>
</select>

Her er det så meningen, at hvis option Andet vælges, så fremkommer:
<input type='text' name='clarify' value='' />

Det hele fåes fra en MSSQL database vha. ASP, og måden hvorpå koden skal finde ud af, at det netop er Andet som skal gøre at inputtet fremkommer, er vha. en variabel.
Altså hvis variablen "clarify" er lig med 1, så skal der fremkomme et text input.

Håber dette er nogenlunde forståeligt :)
Avatar billede rax Praktikant
20. juli 2010 - 13:37 #1
Du skal ud i noget javascript, hvor du viser et output alt efter hvilket element der er valgt.

Skal databasen indgå i valget, skal du ud i noget AJAX.

Hvis det blot drejer sig om at vise et tekstfelt hvis "Andet" vælges i select boxen, kan rent javascript klare opgaven.

- kristian
Avatar billede Slettet bruger
21. juli 2010 - 00:37 #2
Jo tak, jeg er klar over at det er JavaScript jeg skal benytte. Derfor blev spørgsmålet også oprettet under denne kategori.

Det er nu mere fordi, at jeg ikke er så fandens skarp til JavaScript, som jeg er til ASP. Og også derfor, spørger jeg netop om det herinde. :)
Avatar billede rax Praktikant
21. juli 2010 - 07:25 #3
haha okay, det er så mig der er lidt småtosset.. jeg troede jeg var inde på PHP forumet :P

Anyway, prøv følgende:


<script type="text/javascript">
    function showTextField()
    {
        if (document.getElementById('reference_select').selectedIndex == 3)
        {
            document.getElementById('show_textfield').style.display = 'block';
        } else {
            document.getElementById('show_textfield').style.display = 'none';
        }
    }
</script>

<select name="reference" id="reference_select" onchange="showTextField()">
  <option value='1'>Jobportal</option>
  <option value='2'>Facebook</option>
  <option value='3'>En ven</option>
  <option value='4'>Andet</option>
</select>

<br /><br />

<div id='show_textfield' style='display: none;'><input type='text' name='' value='' /></div>


Du kan med fordel flytte dine javascript til en ekstern fil, og skal du bruge meget af det, overveje at anvende et library der gør livet nemmere, f.eks. prototype eller jQuery.

Har du yderligere spørgsmål skriver du bare :)
Avatar billede Slettet bruger
22. juli 2010 - 16:08 #4
JavaScriptet gør pt. at den viser tekst inputtet, hvis indextallet er lig 3 (går ud fra at den hedder 0, 1, 2, 3 i ovenstående tilfælde).
Men hvad så hvis nu et valg af enten Facebook eller Andet skal kunne benytte tekst feltet. Det vil sige, mere end 1 index skal have muligheden for det?

Og jeg har allerede alle mine javascript funktioner samlet i ét javascript dokument.

Er det muligt at lave funktionen, så den bliver kaldt ved fx showTextField(1, 3). Og funktionen så selv finder ud af at benytte de 2 variabler (eller flere), så selectedIndex bliver lig enten 1 eller 3 og så udfører den funktionen.

Det er for at lave funktionen så flexibel som muligt :)

Jeg svarer ikke de næste par dage, da jeg lige tager en forlænget weekend til tyskland.
Avatar billede rax Praktikant
22. juli 2010 - 16:59 #5
ingen problemer, den klarer vi ved at lade funtionen modtage et array af indexes:

<script type="text/javascript">
    function showTextField(index_array)
    {
                for (var i = 0; i < index_array.length; i++)
                {               
            if (index_array[i] == document.getElementById('reference_select').selectedIndex)
            {
                document.getElementById('show_textfield').style.display = 'block';
                break;
            } else {
                document.getElementById('show_textfield').style.display = 'none';
            }
          }
    }
</script>

<select name="reference" id="reference_select" onchange="showTextField([1, 3])">
  <option value='1'>Jobportal</option>
  <option value='2'>Facebook</option>
  <option value='3'>En ven</option>
  <option value='4'>Andet</option>
</select>

<br /><br />

<div id='show_textfield' style='display: none;'><input type='text' name='' value='' /></div>

Værdiene der sendes til functionen kan selvfølgelig tildeles fra ASP med Response.Write.

God tur! :)
Avatar billede Slettet bruger
06. januar 2011 - 22:59 #6
ENDELIG fik jeg tid til at kigge på det.

Og din funktion virkede perfekt! Eller dvs, jeg tilføjede lidt ekstra variabler, for at kunne bruge den globalt i flere sammenhænge, men grundidéen med den var perfekt :)

Tak for hjælpen, og smid et svar!
Avatar billede rax Praktikant
07. januar 2011 - 07:09 #7
Glæder mig du kunne bruge det :)
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