Moin!
Ich kann mir beim besten Willen nicht erklären, warum folgendes Script nicht funktioniert, es soll geprüft werden, ob das Formularfeld "medium" ausgefüllt ist. Was mache ich falsch?
Wie deutlich zu sehen ist, existiert nicht EIN <input> mit Namen "medium", sondern derer gleich drei. Welches Input soll denn genommen werden?
<input type="radio" name="medium" value="Tel">
per Telefon<br>
<input type="radio" name="medium" value="Fax">
per Fax<br>
<input type="radio" name="medium" value="www">
per Online-Shop
Dein Fehler rührt daher, daß du von _einem_ Radiobutton ausgehst, obwohl es _drei_ sind. Also ist logischerweise erstmal herauszufinden, welcher der drei Buttons denn gedrückt ist - wenn überhaupt einer selektiert wurde.
Dabei hilft </selfhtml/javascript/objekte/elements.htm#checked>.
Du siehst: Welcher Radiobutton gemeint ist, wird durch einen Arrayindex ausgewählt:
document.Formular.medium[0] selektiert den ersten Button.
Dann: Ein Radiobutton hat immer einen Value, aber er kann selektiert sein oder auch nicht: document.Formular.medium[0].checked benutzen, um das zu prüfen.
Wenn du jetzt einfach alle vorhandenen Radiobuttons prüfst, ob sie selektiert sind, funktionierts auch.
Dabei kann man es sich einfach und kompliziert machen. Ich bin für "einfach":
function chkFormular()
{
var selektiert = false;
for (i=0; i < document.Formular.medium.length; i++)
{
selektiert = selektiert || document.Formular.medium[i].checked;
}
alert (selektiert);
return selektiert;
}