Radiobuttons
Henning
- javascript
Hallo,
ich weiß dass ich nicht der erste bin der eine Frage in diese Richtung stellt, aber aus den Threads die ich studiert habe bin ich nicht schlauer geworden.
Das Problem ist eigentlich simpel aber offensichtlich übersteigt es mein Troebleshooting-Vermögen: Aus einem Formular soll der Wert eines 'gecheckten' Radiobuttons an eine Funktion übergeben werden. Alles was hinten rauskommt ist 'undefined'
html:
<form name="Form">
<div>blablubbbla:</div>
<input name="Quant" type="text" value="" size="3"><br><br>
<div>blablubbbla<br>
<input type="radio" name="Range" value="50"> 1 - 50<br>
<input type="radio" name="Range" value="75" checked="checked"> 1 - 75<br>
<input type="radio" name="Range" value="100"> 1 - 100<br></div>
<input name="Create" type="button" value="Erstellen" onclick="Pforte(document.Form.Quant.value, document.Form.Range.value)"><br>
</form>
javascript:
function Pforte(Quant, Range) {
var Quant = parseInt(Quant);
if (isNaN(Quant)) {alert("blablubbbla"); return};
alert(Range);
Create(Quant, Range);
}
Alles was ich im Forum gefunden habe ist vollgender Aufruf:
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.
Wenn ich das richtig sehe mach ich im Prinzip doch zweiteres, oder? Was verstehe ich da nicht?
Aus einem Formular soll der Wert eines 'gecheckten' Radiobuttons an eine Funktion übergeben werden. Alles was hinten rauskommt ist 'undefined'
<input type="radio" name="Range" value="50"> 1 - 50<br>
<input type="radio" name="Range" value="75" checked="checked"> 1 - 75<br>
<input type="radio" name="Range" value="100"> 1 - 100<br></div>
<input name="Create" type="button" value="Erstellen" onclick="Pforte(document.Form.Quant.value, document.Form.Range.value)"><br>
Schau Dir mal das Beispiel zur Abfrage von Radio-Elementen an.
Dein Problem ist, dass Du zwar mit document.Form.Range schon den Richtigen zufassen hast, aber dann die falsche Abfrage machst, denn die Eigenschaft value gibt es dort nicht. Das Objekt Range ist ein Feld, in dem die drei <input>-Elemente stecken, und erst in diesen findest Du value und checked - und zwar für jedes Element einzeln.
Deine Vorgehensweise muss daher sein, das Feld Range zu durchlaufen, bis Du auf ein Element triffst, dessen Eigenschaft checked gesetzt ist. Von diesem Element kannst Du dann value auslesen. Das geht in etwa so (ungeprüft aus den Fingern gesaugt):
for (i = 0; (i < Range.length) && (! Range[i].checked); i++) {
}
if (i < Range.length) {
alert("Wert ist " + Range[i].value + ".");
}
else {
alert("Nichts gewählt.");
}
herzlichen dank,
geht jetzt und verstanden hab ichs glaub ich auch. war ein problem mit dem prinzipiellen verständnis wie das ding mit den radios funktioniert...
falls interesse besteht, so klappt das jetzt bei mir:
function R_dio(test) {
var Ra_Value = 0
for (i = 0; i < test.length; i++) {
if (test[i].checked == true) {Ra_Value = test[i].value} else continue;
}
alert(Ra_Value);
}
</script>
</head>
<body>
<form name="form">
<input type="radio" name="test" value="DEFAULT" checked="checked"> default<br>
<input type="radio" name="test" value="JA"> Ja<br>
<input type="radio" name="test" value="NEIN"> Nein<br>
<input type="button" value="Wha'eva" onclick="R_dio(document.form.test)">
</form>
grüsse
h.