Avatar billede nemlig Professor
27. december 2011 - 10:57 Der er 13 kommentarer og
1 løsning

Vis inputfelter alt efter valg i dropdown

Hejsa.
Jeg har en inputformular, hvor jeg har en dropdownliste:

<select name='Type'>
<option>PDF</option>
<option>Link</option>
</select>

Derefter har jeg nogle input-felter
1. Vælg fil: <input type='file' size='75' name='file'>
2. Indtast URL: <input type='text' name='url'>
3. Indtast link: <input type='text' name='link'>

Såfremt der i dropdown er valgt "Link", ønsker jeg ikke, at inputfelter 1 og 2, incl tilhørende tekster, skal vises
Og er der valgt "PDF" ønsker jeg ikke at inputfelt 3, incl. tilhørende tekster, skal vises.

Findes der mon en enkel løsning til dette eller er vi ovre i noget CSS?
Avatar billede flope Nybegynder
27. december 2011 - 15:21 #1
Hej,
Har prøvet at lave et simpelt eksempel med jQuery herunder (ikke testet).
Håber at det åbner op for nogle idéer og muligheder for dig.

<select name='Type' id="type>
<option value="pdf">PDF</option>
<option value="link">Link</option>
</select>
<div id="pdf_step2" style="display:none">
<!-- Her er step 2 (hvis pdf valgt) -->
</div>
<div id="link_step2" style="display:none">
<!-- Her er step 2 (hvis link er valgt) -->
</div>

<script type="text/javascript">
  $(document).ready(function() {
    $('select#type').change(function() {
      var result = $('select#type option:selected').val()
      if (result == 'pdf') {
        $('#pdf_step2').show();
      } else if (result == 'link') {
        $('#link_step2').show();
      }
    });
  });
</script>
Avatar billede nemlig Professor
27. december 2011 - 17:05 #2
Tak for bidraget, men det virker ikke umiddelbart.

1. Jeg har indlæst ...src="script/jquery.js"
2. Jeg definerer script-koden før <select>
3. Jeg har sat id på <select>
4. Jeg har sat value på <option>
5. Jeg sætter DIV som anført.

Men der har ikke ændret noget i afviklingen.
Avatar billede Slettet bruger
27. december 2011 - 21:44 #3
Jeg har lavet en test side ud fra ovenstående, som bruger jQuery.
Koden er:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Eksperten #953993</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
        <script>
        $(document).ready(function(){
            $("#type").change(function(){
                var val = $("#type option:selected").val();
               
                switch(val) {
                    case "PDF":
                        $("#pdf").css("display", "block");
                        $("#link").css("display", "none");
                    break;
                   
                    case "Link":
                        $("#pdf").css("display", "none");
                        $("#link").css("display", "block");
                    break;
                }
            });
        });
        </script>
    </head>
    <body>
        <select id="type" name="Type">
            <option>Vælg Type</option>
            <option>PDF</option>
            <option>Link</option>
        </select>
        <div id="pdf" style="display:none;">
            <input type="file" size="75" name="file">
            <input type="text" name="url">
        </div>
        <div id="link" style="display:none;">
            <input type="text" name="link">
        </div>
    </body>
</html>

Håber du kan bruge det og så god nytår!
Avatar billede nemlig Professor
27. december 2011 - 22:05 #4
Tak for bidraget. Jeg kan godt se, at det isoleret virker, men jeg bøvler med at få det til at virke sammen med min egen kode.

Jeg bøvler videre og vender tilbage.
Avatar billede nemlig Professor
27. december 2011 - 22:09 #5
Så tror jeg, at jeg fandt ud af det.

I min opstilling af siden anvender jeg tabeller, hvorfor mine inputfelter er placeret i celler.

Er der en løsning for dette eller skal jeg igang med noget <div>
Avatar billede Slettet bruger
27. december 2011 - 22:12 #6
Kan du give et eksempel på dine tabeller?
Avatar billede nemlig Professor
27. december 2011 - 22:20 #7
Jeps - kommer her:

<table width='830px' cellpadding='2' cellspacing='2'>
                <tr>
                    <td colspan='2' style='height:20px;background-color: #66ccff;padding:5px;'><span class='textoverskriftStor'>OPRET DOKUMENT/LINK</span></TD>
                </tr>
                <tr>
                    <td width='150px'><span class=text4>Type:</span></td>
                    <td width='680px'><img class='tooltip' src='gfx/info1.gif' alt='$h802' style='cursor:help;'/> <span class=text4>
                    <select id='type' name='opretType' class='form'>
                    <option value='pdf'>PDF-dokument  </option>
                    <option value='link'>Link</option>
                    </select></td>
                </tr>
                <div id='pdf' style='display:none;'>
                <tr>
                    <td><span class=text4>Vælg PDF-dokument:</span></td>
                    <td><img class='tooltip' src='gfx/info1.gif' alt='$h803' style='cursor:help;'/> <input type='file' size='75' name='file_field'></td>
                </tr>
               
                <tr>
                    <td><span class=text4>Dokumentets URL:</span></td>
                    <td><img class='tooltip' src='gfx/info1.gif' alt='$h804' style='cursor:help;'/> <input type='text' class='form' name='opretUrl' size='75' maxlength='75' onfocus=\"this.style.backgroundColor='#$row2[form_bg_aktiv]';\" onblur=\"this.style.backgroundColor='#$row2[form_bg]';\"></td>
                </tr>
                </div>
                <div id='link' style='display:none;'>
                <tr>
                    <td><span class=text4>Dokumentbeskrivelse:</span></td>
                    <td><img class='tooltip' src='gfx/info1.gif' alt='$h805' style='cursor:help;'/> <input type='text' class='form' name='opretTekst' size='75' maxlength='75' onfocus=\"this.style.backgroundColor='#$row2[form_bg_aktiv]';\" onblur=\"this.style.backgroundColor='#$row2[form_bg]';\"></td>
                </tr>
                </div>
                <tr>
                    <td><span class=text4>Vejledningstekst:</span></td>
                    <td><img class='tooltip' src='gfx/info1.gif' alt='$h806' style='cursor:help;'/> <input type='text' class='form' name='opretVejledning' size='75' maxlength='75' onfocus=\"this.style.backgroundColor='#$row2[form_bg_aktiv]';\" onblur=\"this.style.backgroundColor='#$row2[form_bg]';\"></td>
                </tr>
                <tr>
                    <td><span class=text4>Rækkefølge:</span></td>
                    <td><img class='tooltip' src='gfx/info1.gif' alt='$h807' style='cursor:help;'/> <input type='text' class='form' name='opretRaekkefoelge' size='3' maxlength='2' onfocus=\"this.style.backgroundColor='#$row2[form_bg_aktiv]';\" onblur=\"this.style.backgroundColor='#$row2[form_bg]';\"></td>
                </tr>
            </table>
Avatar billede Slettet bruger
27. december 2011 - 23:40 #8
Hvis du ikke gider bruge dine divs rundt om tr's så giv dine tr's id's og hide dem på samme måde som du gør med div'en.
Avatar billede olebole Juniormester
28. december 2011 - 15:55 #9
<ole>

Nej, du kan ikke gemme tabelceller på samme måde, som du gemmer div (eller andre) elementer. Tabelceller og -rækker kan ikke have display:block. Tabelrækker skal gives display:table-row og celler display:table-cell, men da understøttelsen af de korrekte værdier historisk har været rigtig skidt understøttet, er det noget bøvl at arbejde med.

Mit bedste råd: Drop tabellayoutet og brug andre elementer  =)

/mvh
</bole>
Avatar billede olebole Juniormester
28. december 2011 - 15:58 #10
"Hvis du ikke gider bruge dine divs rundt om tr's" >> Det er der ingen med bare et minimalt indblik i webkode, der kunne finde på at gøre (eller foreslå) - så det "gider" spørgeren med statsgaranti ikke  *o)
Avatar billede Slettet bruger
28. december 2011 - 16:36 #11
Man ved jo aldrig, når spørgeren kunne finde på at bruge table-layout ;-)
Avatar billede olebole Juniormester
28. december 2011 - 16:45 #12
Det er da noget frygtelig vrøvl! At lægge DIV rundt om TR elementer resulterer i hamrende invalid kode. Der er intet somhelst invalidt i at bruge tabeller til layout. Det er uhensigtsmæssigt, men på ingen måde 'ulovligt' i forhold til gældende standarder
Avatar billede nemlig Professor
28. december 2011 - 20:39 #13
Jeg forstår, at brug af <table> ikke er ideelt, hvorfor jeg nu har lavet noget DIV, hvilket jeg bestemt ikke er nogen ørn til.
Men jeg kan ikke få det til at spille korrekt.

Jeg har fx. lavet min kode sådan her:

<div id='pdf' style='display:none;'>
    <div class='celleVenstre'>
        <span class=text4>Vælg PDF-dokument:</span>
    </div>
    <div class='celleHoejre'>
        <input type='file' size='75' name='file_field'>
    </div>
</div>

Uanset om jeg i min drop down vælger PDF eller Link, så vises disse 2 blokke ikke.

Min Select er defineret således:
<select id='type' name='opretType' class='form'>
<option value='pdf'>PDF</option>
<option value='link'>Link</option>
</select>

Og javascriptkoden er præcis som angivet ovenfor i #3

Min CSS ser sådan her ud:
.celleVenstre {
    float:left;
    width: 150px;
    height: 30px;
}
.celleHoejre {
    float:left;
    width: 660px;
    height: 30px;
}
Avatar billede nemlig Professor
10. februar 2012 - 08:17 #14
Lukketid. Jeg fik det til at virke ved hjælp fra en 3. person, og Roxki.
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