Reni: Textfeld einblenden mit Radio Button

Hallo,

ich möchte ein Textfeld einblenden, sofern ein Radio Button gelickt ist.

Sofern das Textfeld bei einem von 4 Radiobuttons eingeblendet werden soll geht alles ganz gut mit folgendem Code:

if (document.getElementsByName('Aufenthaltsort')[2].checked) {
document.getElementById('AufenthaltsortK').style.display= 'block';
} else {
document.getElementById('AufenthaltsortK').style.display= 'none';
}

Nun möchte ich aber, dass das Textfeld eingeblendet ist, wenn entweder der Button 3 oder der Button 4 angeklickt ist. Wenn 1 oder 2 ausgewählt wurde, soll das Textfeld ausgeblendet sein.

Mit folgendem Code geht es jedenfalls nicht:

if (document.getElementsByName('Aufenthaltsort')[2].checked) {
document.getElementById('AufenthaltsortK').style.display= 'block';
} else {
document.getElementById('AufenthaltsortK').style.display= 'none';
}
if (document.getElementsByName('Aufenthaltsort')[3].checked) {
document.getElementById('AufenthaltsortK').style.display= 'block';
} else {
document.getElementById('AufenthaltsortK').style.display= 'none';
}

Warum nicht? Obwohl die Codes für sich alleine funktionieren, klappt es zusammen nicht, dass Textfeld wird immer nur bei Klick auf den 4. Button eingeblendet....

  1. if (document.getElementsByName('Aufenthaltsort')[2].checked) {
    document.getElementById('AufenthaltsortK').style.display= 'block';
    } else {
    document.getElementById('AufenthaltsortK').style.display= 'none';
    }

    Text ist eingeblendet, wenn ...[2].checked

    if (document.getElementsByName('Aufenthaltsort')[3].checked) {
    document.getElementById('AufenthaltsortK').style.display= 'block';
    } else {
    document.getElementById('AufenthaltsortK').style.display= 'none';
    }

    und wird sofort wieder ausgeblendet, wenn [3].nicht_checked

    LG Kalle

    1. if (document.getElementsByName('Aufenthaltsort')[2].checked) {
      document.getElementById('AufenthaltsortK').style.display= 'block';
      } else {
      document.getElementById('AufenthaltsortK').style.display= 'none';
      }

      Text ist eingeblendet, wenn ...[2].checked

      if (document.getElementsByName('Aufenthaltsort')[3].checked) {
      document.getElementById('AufenthaltsortK').style.display= 'block';
      } else {
      document.getElementById('AufenthaltsortK').style.display= 'none';
      }

      und wird sofort wieder ausgeblendet, wenn [3].nicht_checked

      Und warum funktioniert es dann umgekehrt? Also Text bleibt eingeblendet, wenn [3].checked, obwohl [2]. nicht_checked ...

      1. Hallo Reni

        Und warum funktioniert es dann umgekehrt? Also Text bleibt eingeblendet, wenn [3].checked, obwohl [2]. nicht_checked ...

        weil der Code Zeile für Zeile abgearbeitet wird und die spätere
        Abfrage die frühere in diesem Fall bedeutungslos macht.

        Du brauchst daher einen Grundzustand für das Textfeld (zB style.display = 'none'; }
        den du nur dann änderst, wenn ein Ereignis eintrifft.  also zB bei if(.....[var].checked) { style ändern auf display: block; }

        Wenn das Ereignis nicht eintrifft, veränderst du auch den style nicht.
        Somit bleibt eine vorher durchgeführte Änderung (z.B. durch Radiobutton 2)
        auch dann aufrecht, wenn Radiobutton 3 nicht gedrückt wurde.

        herzliche Grüße
        Michael

        1. weil der Code Zeile für Zeile abgearbeitet wird und die spätere
          Abfrage die frühere in diesem Fall bedeutungslos macht.

          Du brauchst daher einen Grundzustand für das Textfeld (zB style.display = 'none'; }
          den du nur dann änderst, wenn ein Ereignis eintrifft.  also zB bei if(.....[var].checked) { style ändern auf display: block; }

          Wenn das Ereignis nicht eintrifft, veränderst du auch den style nicht.
          Somit bleibt eine vorher durchgeführte Änderung (z.B. durch Radiobutton 2)
          auch dann aufrecht, wenn Radiobutton 3 nicht gedrückt wurde.

          herzliche Grüße
          Michael

          Danke, das hat mir geholfen! Hab es jetzt hinbekommen!

  2. Warum nicht? Obwohl die Codes für sich alleine funktionieren, klappt es zusammen nicht, dass Textfeld wird immer nur bei Klick auf den 4. Button eingeblendet....

    ich bin von sowas generell kein freund so müsst es aber gehen:

    a=document.getElementsByName('Aufenthaltsort'):
    document.getElementById('AufenthaltsortK').style.display=((a[2].checked||a[3].checked)?'block':'none');

    1. Warum nicht? Obwohl die Codes für sich alleine funktionieren, klappt es zusammen nicht, dass Textfeld wird immer nur bei Klick auf den 4. Button eingeblendet....

      ich bin von sowas generell kein freund so müsst es aber gehen:

      a=document.getElementsByName('Aufenthaltsort'):
      document.getElementById('AufenthaltsortK').style.display=((a[2].checked||a[3].checked)?'block':'none');

      Sorry, aber verstehe das nicht ganz: Muss ich den Code auch als if-code schreiben?
      Muss ich im Html-Code auch noch etwas einfügen?

  3. Hi,

    sofern ein Radio Button gelickt ist.

    <input type="radio" name="p*ssy"> ...?

    SCNR ChrisB