Avatar billede jss Nybegynder
22. november 2006 - 10:50 Der er 4 kommentarer og
1 løsning

Show/hide afhængig af 2 grupper radiobuttons

Hejsa
Jeg har et div som skal vises på baggrund af markering (OnClick) i 2 grupper radiobuttons ... dvs. value 1 eller value 2 i RadioGrp1 OG / ELLER
value 1 eller value 2 i RadioGrp2 er markeret så skal et bestemt div vises, ellers skal det skjules. Kan man det? Show/hide fungerer fint for mig, hvis der kun er tale en én gruppe radiobuttons vha en flg. funktion

function show(which,qst){
  for (var i=1; i<=2; i++) {
    var dv = document.getElementById(qst+i);
    dv.style.display = (i==which) ? 'block' : 'none';
  }
}

og sådan ser min OnClick feks. ud:
<span class='answer2'><input type='radio' name='f6' value='1' id='idf6_1' onClick="show(2,'f7');"><label for='idf6_1'> Ja</label></span><br>
<span class='answer2'><input type='radio' name='f6' value='2' id='idf6_2' onClick="show(1,'f7');"><label for='idf6_2'> Nej</label></span><br>

<div id="f71" style="display:none;">

</div>

<div id="f72" style="display:none;">
  Her skal stå noget tekst osv. hvis der er markeret "Ja"
</div>
Avatar billede roenving Novice
22. november 2006 - 11:17 #1
Du kan da bare lave to ens kald:

function show(which,qst){
  for (var i=1; i<=2; i++) {
    var dv = document.getElementById(qst+i);
    dv.style.display = (i==which) ? 'block' : 'none';
  }
}

og sådan ser min OnClick feks. ud:
<span class='answer2'><input type='radio' name='f6' value='1' id='idf6_1' onClick="show(2,'f7');"><label for='idf6_1'> Ja</label></span><br>
<span class='answer2'><input type='radio' name='f6' value='2' id='idf6_2' onClick="show(1,'f7');"><label for='idf6_2'> Nej</label></span><br>

<span class='answer2'><input type='radio' name='f6_2' value='1' id='idf6_2_1' onClick="show(2,'f7');"><label for='idf6_2_1'> Ja</label></span><br>
<span class='answer2'><input type='radio' name='f6_2' value='2' id='idf6_2_2' onClick="show(1,'f7');"><label for='idf6_2_2'> Nej</label></span><br>

<div id="f71" style="display:none;">

</div>

<div id="f72" style="display:none;">
  Her skal stå noget tekst osv. hvis der er markeret "Ja"
</div>
Avatar billede jss Nybegynder
22. november 2006 - 12:04 #2
Så ryger jeg lige direkte ind i kernen af mit problem.
Hvis jeg vælger "Ja" i den første, så skal teksten vises uanset at der vælges "Nej" i den næste. Hvis jeg gør som ovenfor, så forsvinder (hides) min div "igen" ved "Nej" i den anden. Det blev lidt knudret - håber du kan se min pointe :-))
Avatar billede jss Nybegynder
22. november 2006 - 13:14 #3
roenving:
Måske du også kan hjælpe mig lidt vedr. http://www.eksperten.dk/spm/718419 (er dog lukket nu, men nyt spmål kan jo oprettes)
Jeg kunne godt tænke mig at gøre switchDiv-funktionen mere dynamisk - sådan at jeg kan have hele formularen på én side. Udfordringen er at jeg kunne tænke mig at have betingelser med - forstået således at man feks. i en given div-gruppe svarer "Ja" på et spørgsmål og det medfører at man skal "hoppe" til et andet spørgsmål i en anden div-gruppe (feks. 2 div-grupper længere nede). Kan man overhovedet dette eller bliver det for kompleks?
Avatar billede roenving Novice
22. november 2006 - 13:25 #4
Så bliver det jo en del mer langhåret ...


F.eks.

<script type="text/javascript">
function show(which,qst,sync){
  if(sync && which.form.elements(sync)[0].checked){
    sync = true;
  }else sync = false;
  var show = sync ? 2 : which.value == 1 ? 2 : 1
  for (var i=1; 3>i; i++) {
    var dv = document.getElementById(qst+i);
    dv.style.display = (i==show) ? 'block' : 'none';
  }
}
</script>

og sådan ser min OnClick feks. ud:
<form>
<span class='answer2'><input type='radio' name='f6' value='1' id='idf6_1' onClick="show(this,'f7','f6_2');"><label for='idf6_1'> Ja</label></span><br>
<span class='answer2'><input type='radio' name='f6' value='2' id='idf6_2' onClick="show(this,'f7','f6_2');"><label for='idf6_2'> Nej</label></span><br>

<span class='answer2'><input type='radio' name='f6_2' value='1' id='idf6_2_1' onClick="show(this,'f7','f6');"><label for='idf6_2_1'> Ja</label></span><br>
<span class='answer2'><input type='radio' name='f6_2' value='2' id='idf6_2_2' onClick="show(this,'f7','f6');"><label for='idf6_2_2'> Nej</label></span><br>

<div id="f71" style="display:none;">
  Her skal stå noget tekst osv. hvis der er markeret "Nej"
</div>

<div id="f72" style="display:none;">
  Her skal stå noget tekst osv. hvis der er markeret "Ja"
</div>
</form>

-- den anden bliver nok _meget_ langhåret, jeg har i hvert fald ingen ide til den umiddelbart !-)
Avatar billede jss Nybegynder
04. december 2006 - 14:55 #5
Hej roenving - havde lidt problemer med at få dit forslag til at virke. Fandt en anden løsning - måske ikke så køn ....

function showHiddenLayer(formname, r1name, r2name,divID) {
    if ((document.forms[formname].elements[r1name][3].checked == true || document.forms[formname].elements[r1name][4].checked == true) || (document.forms[formname].elements[r2name][3].checked == true || document.forms[formname].elements[r2name][4].checked == true)) {
    document.getElementById(divID).style.display = 'block';
    } else {
    document.getElementById(divID).style.display = 'none';
    }
}
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