Welcher Radiobutton ist gedrückt?
Kalle_B
- javascript
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
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
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
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
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
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.
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