Problem mit Radio-Buttons
andreas_ck
- javascript
0 EkielUma0 Antje Hofmann0 andreas_ck
Moin,
ich habe folgendes, merkwürdiges (für mich wenigstens) Problem:
Ich habe ein Formular, das eine Gruppe Radio-Buttons enthält. Da das Formular dynamisch generiert wird, ist die Anzahl der Radio-Buttons nicht immer gleich. Beim Drücken auf den Send-Button wird die Function schicke_an(ziel) aufgerufen. Diese überprüft, ob ein Radio-Button aktiviert wurde. Wenn nein, erscheint die Meldung: 'Bitte drücken Sie einen Radio-Button'.
Wenn ich mehr als eine Radio-Button habe und eine davon aktiviert ist, klappt auch alles wunderbar und das Formular wird abgeschickt. Wenn ich aber nur eine habe und diese aktiviere, erscheint trotzdem die alert-Ausgabe. Das verstehe ich nicht und ist auch nicht so gewollt. Hier ist meine Funktion:
function schicke_an(ziel)
{
var tmp=0;
for(var i=0; i<document.datei_aenderung.ausgewaehlt.length; i++)
{
if(document.datei_aenderung.ausgewaehlt[i].checked)
tmp++;
}
if(tmp > 0)
{
document.datei_aenderung.action = ziel;
document.datei_aenderung.submit();
}
else
alert('Bitte drücken Sie einen Radio-Button);
}
Für jede Hilfe bin ich dankbar.
Andreas
Da ich nicht deinen gesamten Quellcode habe, und so nicht selbst testen konnte kann ich nur tippen:
Könnten Syntaxfehler sein.
Nach meiner Erfahrung bekommt man da nicht unbedingt ne Fehlermeldung, sondern es kommt einfach nicht das gewünschte raus.
Korrekturen:
if(document.datei_aenderung.ausgewaehlt[i].checked)
tmp++;
if(document.datei_aenderung.ausgewaehlt[i].checked)
{tmp++;}
else
alert('Bitte drücken Sie einen Radio-Button);
else
{alert('Bitte drücken Sie einen Radio-Button');}
(Hier nicht das Anführungszeichen am Ende des Strings übersehen)
Wenn das nicht hilft, würde ich mir am Schluss mal mit alert die Variable tmp ausgeben lassen, um zu sehen, ob der wert überhaupt stimmt. Wenn nicht, musst du die for-schleife wohl überprüfen (sehe aber keinen Fehler).
Du kannst auch zum testen tmp vor if(tmp > 0) einen festen Wert geben.
Hallo Andreas
Wenn ich mehr als eine Radio-Button habe und eine davon aktiviert ist, klappt auch alles wunderbar und das Formular wird abgeschickt. Wenn ich aber nur eine habe und diese aktiviere, erscheint trotzdem die alert-Ausgabe. Das verstehe ich nicht und ist auch nicht so gewollt. Hier ist meine Funktion:
Das Schlüsselwort ist "eine"
wenn du nur eine Radiobox hast, wird diese nicht mehr als ein Array angesehen. Du mußt diese dann als eigenständiges Element behandeln.
Du kannst das dadurch überprüfen, indem du prüfst, ob die Eigenschaft length existiert.
Füge dazu einfach folgende Zeile hinzu:
if (!document.datei_aenderung.ausgewaehlt.length && document.datei_aenderung.ausgewaehlt.checked) tmp++;
Viele Grüße
Antje
Moin,
vielen Dank euch beiden für eure Hilfe. Mit Antjes Zusatzzeile klappt es wunderbar. Super!
Moin,
ich habe folgendes, merkwürdiges (für mich wenigstens) Problem:
Ich habe ein Formular, das eine Gruppe Radio-Buttons enthält. Da das Formular dynamisch generiert wird, ist die Anzahl der Radio-Buttons nicht immer gleich. Beim Drücken auf den Send-Button wird die Function schicke_an(ziel) aufgerufen. Diese überprüft, ob ein Radio-Button aktiviert wurde. Wenn nein, erscheint die Meldung: 'Bitte drücken Sie einen Radio-Button'.
Wenn ich mehr als eine Radio-Button habe und eine davon aktiviert ist, klappt auch alles wunderbar und das Formular wird abgeschickt. Wenn ich aber nur eine habe und diese aktiviere, erscheint trotzdem die alert-Ausgabe. Das verstehe ich nicht und ist auch nicht so gewollt. Hier ist meine Funktion:
function schicke_an(ziel)
{
var tmp=0;
for(var i=0; i<document.datei_aenderung.ausgewaehlt.length; i++)
{
if(document.datei_aenderung.ausgewaehlt[i].checked)
tmp++;
}
if(tmp > 0)
{
document.datei_aenderung.action = ziel;
document.datei_aenderung.submit();
}
else
alert('Bitte drücken Sie einen Radio-Button);
}
Für jede Hilfe bin ich dankbar.
Andreas