Avatar billede tanzaweb Nybegynder
11. juli 2005 - 23:45 Der er 6 kommentarer og
1 løsning

Vælg mellem flere select felter

Hejsa

Jeg er ved at lave et script hvor jeg skal have indsat 2 kategorier hvoraf den en er afhængig af den anden.

Den ene select ser således ud:

        <select name="KatId" onchange="this.form.SubKatId.style.display=(this.value=='1')?'inline':'none';">
        <option id="KatId" value="0">Vælg verdensdel</option>
        <?php while ($resultat_1 = mysql_fetch_array($result)){ ?>
        <option id="KatId" value="<?php echo $resultat_1['KatId']; ?>"><?php echo $resultat_1['Kategori']; ?></option>
        <?php } ?>
        </select>
Man skal her vælge en kategori og alt efter hvad kategor man vælger åbner den et andet select med en SubKategori. Jeg har brugt den før med 2 felter men her er der flere helt op til 6 jeg har prøvet noget ligende dette men kan ikke få det il at virke korrekt:

$result_sub=mysql_query("SELECT * FROM subkategori WHERE KatId ='1'");
        ?>
        <select name="SubKatId_" style="display:none;" >
        <?php while ($resultatSub = mysql_fetch_array($result_sub)){ ?>
        <option value="<?php echo $resultatSub['SubKatId']; ?>"><?php echo $resultatSub['SubKat']; ?></option>
        <?php } ?>
        </select><br />
       
        $result_sub=mysql_query("SELECT * FROM subkategori WHERE KatId ='2'");
        ?>
        <select name="SubKatId" style="display:none;" >
        <?php while ($resultatSub = mysql_fetch_array($result_sub)){ ?>
        <option value="<?php echo $resultatSub['SubKatId']; ?>"><?php echo $resultatSub['SubKat']; ?></option>
        <?php } ?>
        </select>

Kan man gøre denne del onchange="this.form.SubKatId.style.display=(this.value=='1')?'inline':'none';"> med this.value=='1' afhængig af hvad man vælger da den jo så skal vælge enten den en eller den anden subKategori???????????????

Nogen forslag
Avatar billede roenving Novice
12. juli 2005 - 07:53 #1
Sagtens, ja, f.eks.

<script type="text/javascript">
function showSelect(sel){
  var x = 1;
  while(sel.form.elements["SubKatId" + x]){
    sel.form.elements["SubKatId" + x].style.display = 'none';
    x++;
  }
  if(sel.form.elements["SubKatId" + sel.value])
    sel.form.elements["SubKatId" + sel.value].style.display = "inline!;
}
</script>

-- og master-selecten bliver så:

        <select name="KatId" onchange="showSelect(this);">


Iøvrigt må du ikke have flere elementer med samme id i et html-dokument, så fjern id'et fra dine option-tags !-)
Avatar billede tanzaweb Nybegynder
12. juli 2005 - 12:46 #2
Mangler der ikke et " i denne linje til sidst?

sel.form.elements["SubKatId" + sel.value].style.display = "inline!;

Mads
Avatar billede tanzaweb Nybegynder
12. juli 2005 - 12:54 #3
Jeg har lavet den så den ser nogenllunde således ud nu, men den viser ingenting:

<script type="text/javascript">
function showSelect(sel){
  var x = 1;
  while(sel.form.elements["SubKatId" + x]){
    sel.form.elements["SubKatId" + x].style.display = 'none';
    x++;
  }
  if(sel.form.elements["SubKatId" + sel.value])
    sel.form.elements["SubKatId" + sel.value].style.display = 'inline!';
}
</script>

        <select name="KatId" onchange="showSelect(this);">
        <option value="0">Vælg verdensdel</option>
                <option value="1">Europa</option>
                <option value="2">Afrika</option>
                <option value="3">Gavekort</option>
                <option value="4">Nord Amerika</option>
                <option value="5">Syd Amerika</option>
                </select><br />
       
                <select name="SubKatId_" style="display:none;" >
                <option value="5">Danmark</option>
                <option value="6">Sverige</option>
                <option value="7">Norge</option>
                <option value="8">Tyskland</option>
                <option value="9">Spanien</option>
                </select><br />
       
                <select name="SubKatId" style="display:none;" >
                <option value="1">Tanzania</option>
                <option value="2">Kenya</option>
                <option value="3">Uganda</option>
                <option value="4">Syd Afrika</option>
                </select>

Er det fordi at SubKatId skal have nogle forskellige id="" som er forskelige eller hvad for at genkende dem?

Javascript er ikke lige min stærke side
Avatar billede roenving Novice
12. juli 2005 - 12:55 #4
-- jo selvfølgelig, jeg er åbenbart kommet til at ramme tasten ved siden af:

    sel.form.elements["SubKatId" + sel.value].style.display = 'inline';
Avatar billede tanzaweb Nybegynder
12. juli 2005 - 14:10 #5
Har fået løst det med følgende at indsætte en id med variabler i istedet så den så henviser til og den beholder det rigtige name attribut til PHP og mysql'en.

<select id="SubKatId1" name="SubKatId" style="display:none;" >
                <option value="1">Tanzania</option>
                <option value="2">Kenya</option>
                <option value="3">Uganda</option>
                <option value="4">Syd Afrika</option>
                </select>

<select id="SubKatId2" name="SubKatId" style="display:none;" >
                <option value="1">Tanzania</option>
                <option value="2">Kenya</option>
                <option value="3">Uganda</option>
                <option value="4">Syd Afrika</option>
                </select>

o.s.v. så det virker nu indtil videre ihvertfald tak for hjælpen roenving.

send et svar og du får pointene.
Avatar billede roenving Novice
12. juli 2005 - 14:12 #6
Velbekomme '-)
Avatar billede roenving Novice
12. juli 2005 - 14:22 #7
-- og tak for point ;~}
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