Avatar billede ripley Nybegynder
21. juli 2004 - 11:20 Der er 5 kommentarer og
1 løsning

Ved valg af radio-button skal tekst "foldes ud"

Jeg har to radio buttons:

<table width="100%">
    <tr>
        <td>
            <form name="formVaelg" method="post">
        <table align="left" valign="middle">
            <tr>
                <td colspan="2">Vælg mellem disse to:</td>
            </tr>
            <tr>
                <TD><INPUT type="radio" name="valg1" value="valg1"></TD>
                <td>Valg nr. 1</td>

            </tr>
            <tr>
                <TD><INPUT type="radio" name="valg2" value="valg2"></TD>
                <td>Valg nr. 2</td>
            </tr>
            </table>
        </form>
    </td>
    </tr>
</table>

Jeg vil gerne have, at når man vælger én af dem, så kobles en tekst på under, afhængig af hvilken man valgte - og afsluttes af tekst, der står til sidst uanset hvilken man valgte.

Jeg har ledt på nettet men ikke fundet noget brugbart.
Nogen forslag???
Avatar billede roenving Novice
21. juli 2004 - 11:48 #1
<script type="text/javascript">
function visValgte(elm){
  var valgt = elm.value.replace(/^.*(\d)$/,"$1");
  for(i=1;3>i;i++){
    document.getElementById('tekst'+i).style.display = (i==valgt)?'block':'none';
  }
}
</script>

<table width="100%">
  <tr>
    <td>
      <form name="formVaelg" method="post">
        <table align="left" valign="middle">
          <tr>
            <td colspan="2">Vælg mellem disse to:</td>
          </tr>
          <tr>
            <TD><INPUT type="radio" name="valg" value="valg1" onclick="visValgte(this)"></TD>
            <td>Valg nr. 1</td>
          </tr>
          <tr>
            <TD><INPUT type="radio" name="valg" value="valg2" onclick="visValgte(this)"></TD>
            <td>Valg nr. 2</td>
          </tr>
        </table>
      </form>
    </td>
  </tr>
  <tr id="tekst1" style="display:none;">
    <td>Tekst1</td>
  </tr>
  <tr id="tekst2" style="display:none;">
    <td>Tekst2</td>
  </tr>
  <tr id="tekst3">
    <td>Tekst3</td>
  </tr>
</table>
Avatar billede ripley Nybegynder
21. juli 2004 - 12:00 #2
Det ser ud til at være lige præcis det, jeg har brug for.

Gider du forklare mig følgende linje:

  var valgt = elm.value.replace(/^.*(\d)$/,"$1");

Jeg kan ikke rigtig gennemskue, hvad der sker hér?
Avatar billede roenving Novice
21. juli 2004 - 12:27 #3
Den piller tallet ud af radioens værdi ved at fjerne det, som ikke er det sidste tegn, som også skal være et tal ...

-- og netop det med tallet var grunden til konstruktionen, for har du alligevel ikke andet end de to, kunne du nøjes med:

var valgt = elm.value.substring(elm.value.length-1);

-- virker med numre mellem 0 og 9, hvor den anden med et simpelt + tilføjet vil virke med alle mulige tal:

  var valgt = elm.value.replace(/^.*(\d+)$/,"$1");

Velbekomme '-)
Avatar billede ripley Nybegynder
21. juli 2004 - 12:45 #4
Et sidste spørgsmål (hvis du gider) - hvis nu mine values skal være navne uden tal, hvad så? Kan man det uden store problemer?
Avatar billede roenving Novice
21. juli 2004 - 13:35 #5
Nu har jeg lagt dem sammen til een radio-group, fordi det ellers ikke giver mening at bruge radios ...

Og udformningen er sådan, at du kan udvide den stort set uendeligt, og på en meget simpel måde lave mange !-)

Alternativet, hvis du har values, hvor vi ikke kan hente noget vi kan sammenligne er, at vi koder det langsomt:

<TD><INPUT type="radio" name="valg" value="valg2" onclick="visValgte(2)"></TD>

<script type="text/javascript">
function visValgte(valgt){
  for(i=1;3>i;i++){
    document.getElementById('tekst'+i).style.display = (i==valgt)?'block':'none';
  }
}
</script>
Avatar billede roenving Novice
21. juli 2004 - 13:36 #6
-- 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