Kalle_B: Welcher Radiobutton ist gedrückt?

Hallöle,

ich habe eine unbestimmte Zahl (hier 26) von Radiobuttons in einer Liste:
<input type=radio name=abschnitt value=26>

Nun möchte ich wissen, welcher Button gewählt wurde. In PHP ganz einfach, scheint das in JavaScript komplizierter zu sein.

Einen bestimmten Button kann ich abfragen:
  alert( 'Wert=[' +document.getElementsByName('abschnitt')[25].value +']' );
  alert( 'checked=[' +document.getElementsByName('abschnitt')[25].checked +']' );

Muss ich die Anzahl der Buttons irgendwo hinterlegen und die dann in einer for- Schleife durchhecheln?

Lieben Gruß, Kalle

  1. Hallo,

    Nun möchte ich wissen, welcher Button gewählt wurde. In PHP ganz einfach, scheint das in JavaScript komplizierter zu sein.

    Nicht wirklich, es gibt in JavaScript mehrere Wege. Zum Beispiel diesen:

      
    document.getElementById('id-deiner-form').abschnitt.value;  
    
    

    Muss ich die Anzahl der Buttons irgendwo hinterlegen und die dann in einer for- Schleife durchhecheln?

    Eine Schleife geht auch und zwar mit

      
    var inputs=document.getElementById('id-deiner-form').getElementsByTagName('input');  
    
    

    Anschließend gehst du dann die Inputs durch, überprüfst ob sie radiobuttons mit dem Namen abschnitt sind und schaust ob die Eigenschaft checked auf true steht.

    Ciao
    Phil

    1. Hallo,

      document.getElementById('id-deiner-form').abschnitt.value;

        
      Das .value scheint bei Radiobuttons nicht zu funktionieren, das habe ich natürlich als erstes versucht. Ergibt immer 'undefined', ob einer geklickt ist oder nicht, ob ich die id oder den Namen der Form abfrage:  
      alert( 'Radiobutton-Wert=[' +document.getElementById('form\_p135\_b').abschnitt.value +']' );  
      oder:  
      alert( 'Radiobutton-Wert=[' +document.form\_p135\_2.abschnitt.value +']' );  
        
      Habe das jetzt erstmal so gelöst:  
      ~~~javascript
        
        for ( i=0; i<document.form_p135_2.abschnitt.length; i++ )  
        {  
          if ( document.form_p135_2.abschnitt[i].checked == true )  
          {  
            markiert = i +1;  
            alert( 'Radiobutton [' +markiert +'] ist markiert' );  
          }  
        }  
        if ( markiert == 0 ) alert( 'kein Radiobutton ist markiert' );  
      
      

      Bissel umständlich, aber wenn's dann nicht anders geht ...

      Gruß, Kalle

      1. Hello out there!

        if ( document.form_p135_2.abschnitt[i].checked == true )

        Wozu der Vergleich gegen true; es reicht 'if ( document.form_p135_2.abschnitt[i].checked )'.

        In natürlicher Sprache fragst du auch nicht „Ist es wahr, dass der Button ausgewählt ist?“, sondern „Ist der Button ausgewählt?“.

        if ( markiert == 0 ) alert( 'kein Radiobutton ist markiert' );

        Was soll das bitte? Schon wieder vergessen? http://forum.de.selfhtml.org/archiv/2007/2/t146829/#m952844

        See ya up the road,
        Gunnar

        --
        „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
    2. Moin!

      Nicht wirklich, es gibt in JavaScript mehrere Wege. Zum Beispiel diesen:

      document.getElementById('id-deiner-form').abschnitt.value;

        
      Ein schönes Beispiel für unnötig komplizierte Herangehensweisen an das Problem. Das wird aber nur noch durch  
        
      
      > Eine Schleife geht auch und zwar mit  
      > ~~~javascript
        
      
      > var inputs=document.getElementById('id-deiner-form').getElementsByTagName('input');  
      > 
      
      

      das hier getoppt!

      Wozu gibts denn das allseits bekannte DOM-Interface für Formulare und deren Elemente? Doch nicht zum Ignorieren!

      document.forms[NAME].elements[NAME] existiert! Nutzt es! Sofern es sich nicht sowieso anbietet, die Referenz wahlweise auf das Element oder das Formular in einem Event-Handler per "this" an die Funktion direkt durchzureichen.

      PS: Das ist auch deutlich performanter, als das ewige getElementXY.

      - Sven Rautenberg

      --
      "Love your nation - respect the others."
  2. ich habe eine unbestimmte Zahl (hier 26) von Radiobuttons in einer Liste:
    <input type=radio name=abschnitt value=26>

    Attribute müssen in Anführungszeichen stehen.

    Nun möchte ich wissen, welcher Button gewählt wurde. In PHP ganz einfach, scheint das in JavaScript komplizierter zu sein.

    Naja, in PHP kommt auch nur der Button an, der gewählt wurde in JS sind alle vorhanden.

    Muss ich die Anzahl der Buttons irgendwo hinterlegen und die dann in einer for- Schleife durchhecheln?

    Nein und Ja, die Anzahl der buttons ist bekannt document.forms['NameFormular'].elements['NameRadiobuttons'].length; und dann diese Collection "durchecheln"

    Struppi.

    --
    Javascript ist toll (Perl auch!)
    1. Hello out there!

      <input type=radio name=abschnitt value=26>

      Attribute müssen in Anführungszeichen stehen.

      Nein, müssen nicht. Sollten sie aber. [HTML401 §3.2.2]

      See ya up the road,
      Gunnar

      --
      „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)