andreas: Warum geht das script nicht?

Hi!
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?

Grüße Andreas

<html>
<head>
<script language="JavaScript">
  <!--
   function chkFormular()
  {
   if(document.Formular.medium.value == "")
    {
     alert("Bitte blablabla!");
     document.Formular.medium.focus();
     return false;
    }
}
  //-->
</script>
</head>

<body>
<form name="Formular" method="post" onSubmit="return chkFormular()">
  <p>
    <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
  </p>
  <p>
    <input type="submit" name="submit" value="submit">
  </p>
</form>
</body>
</html>

  1. 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;
    }

    1. Hi Sven!

      Danke Dir! Jetzt funktioniert das zwar, aber eine Frage hätte ich noch, wie kann ich im onSubmit mehrere Funktionen ausführen? Mit ; geht nicht, oder sopllte das gehen?

      Grüße
        Andreas

      1. Hallo Andreas,

        Danke Dir! Jetzt funktioniert das zwar, aber eine Frage hätte ich noch, wie kann ich im onSubmit mehrere Funktionen ausführen?

        Indem du eine Funktion aufrufst, die wiederum andere Funktionen aufruft.

        viele Gruesse
          Stefan Muenz

        1. Hi!

          Indem du eine Funktion aufrufst, die wiederum andere Funktionen aufruft.

          Ah! Danke Euch!

          Grüße
            Andreas