Mac: Array Eingabe check funtioniert nicht

Habe ich Tomaten auf den Augen oder warum funktioniert diese Formular check funktion nicht? Ich habe folgende Eingabe-Prüfung für ein radio button array im Formular form1 versucht.

<script type="text/javascript">

function chkFormular()
{
if(document.form1.wunsch1[0].checked == false
  && document.form1.wunsch1[1].checked == false
   && document.form1.wunsch1[2].checked == false
    && document.form1.wunsch1[3].checked == false
      && document.form1.wunsch1[4].checked == false
       && document.form1.wunsch1[5].checked == false
        && document.form1.wunsch1[6].checked == false) {
     alert("Bitte geben Sie den Wunsch 1 ein!");
     document.form1.wunsch1.focus();
     return false;
  }
}
</script>

(und im Formular natuerlich: onSubmit="return chkFormular())
Villeicht sehr ihr was was ich nicht sehe.
Gruß
Mac

  1. Hi,

    was funktioniert nicht?

    Grüße,
    Thorsten F.

    1. Hi,

      was funktioniert nicht?

      Grüße,
      Thorsten F.

      Das alert Fenster erscheint nicht und die Eingabe wird ungeprüft abgeschickt!
      Mac!

      PS: In meinem ersten posting fehlen die letzten Anführungszeichen bei onSubmit="return chkFormular()".
      Die sind hier natürlich drin. Daran liegt's also nicht

      1. Was passiert denn, wenn du das "return" mal rausnimmst?

        Also anstatt: onSubmit="return chkFormular()", nur
        onSubmit="chkFormular()"?

        1. Was passiert denn, wenn du das "return" mal rausnimmst?

          Also anstatt: onSubmit="return chkFormular()", nur
          onSubmit="chkFormular()"?

          Gleiches Problem! Im Gegenteil: Bei allen anderen Prüfungen (Ich habe noch weitere Eingabeprüfungen, die kein array enthalten und einwandfrei funtionieren) wird die Eingabe nach dem Drücken des "OK" Buttons im alert-Fenster trotzdem abgeschickt.
          Mac

  2. Hallo Mac,

    function chkFormular()
    {
    if(document.form1.wunsch1[0].checked == false
      && document.form1.wunsch1[1].checked == false
       && document.form1.wunsch1[2].checked == false
        && document.form1.wunsch1[3].checked == false
          && document.form1.wunsch1[4].checked == false
           && document.form1.wunsch1[5].checked == false
            && document.form1.wunsch1[6].checked == false) {
         alert("Bitte geben Sie den Wunsch 1 ein!");
         document.form1.wunsch1.focus();
         return false;
      }

    else {
        return true;
    }

    }

    hilft nicht?

    Gruß,
    small-step

    1. }

      else {
          return true;
      }

      }
      hilft nicht?

      Gruß,
      small-step

      Hilft leider auch nichts! Die übrigen Prüfungen funktionieren übrigens auch ohne return true.
      Danke! Mac

  3. Hallo,

    function chkFormular()
    {
    if(document.form1.wunsch1[0].checked == false
      && document.form1.wunsch1[1].checked == false
       && document.form1.wunsch1[2].checked == false
        && document.form1.wunsch1[3].checked == false
          && document.form1.wunsch1[4].checked == false
           && document.form1.wunsch1[5].checked == false
            && document.form1.wunsch1[6].checked == false) {
         alert("Bitte geben Sie den Wunsch 1 ein!");
         document.form1.wunsch1.focus();
         return false;
      }
    }

    Wie sehen die INPUT.type="radio" im HTML dazu aus? Wenn das JavaScript so funktionieren soll, müssten sie etwa so

    <input type="radio" name="wunsch1" value="v1">
    <input type="radio" name="wunsch1" value="v2">
    <input type="radio" name="wunsch1" value="v3">
    <input type="radio" name="wunsch1" value="v4">
    <input type="radio" name="wunsch1" value="v5">
    <input type="radio" name="wunsch1" value="v6">
    <input type="radio" name="wunsch1" value="v7">

    aussehen. Aber was soll dann

    document.form1.wunsch1.focus();

    bewirken?

    viele Grüße

    Axel

    1. Hallo,

      function chkFormular()
      {
      if(document.form1.wunsch1[0].checked == false
        && document.form1.wunsch1[1].checked == false
         && document.form1.wunsch1[2].checked == false
          && document.form1.wunsch1[3].checked == false
            && document.form1.wunsch1[4].checked == false
             && document.form1.wunsch1[5].checked == false
              && document.form1.wunsch1[6].checked == false) {
           alert("Bitte geben Sie den Wunsch 1 ein!");
           document.form1.wunsch1.focus();
           return false;
        }
      }

      Wie sehen die INPUT.type="radio" im HTML dazu aus? Wenn das JavaScript so funktionieren soll, müssten sie etwa so

      <input type="radio" name="wunsch1" value="v1">
      <input type="radio" name="wunsch1" value="v2">
      <input type="radio" name="wunsch1" value="v3">
      <input type="radio" name="wunsch1" value="v4">
      <input type="radio" name="wunsch1" value="v5">
      <input type="radio" name="wunsch1" value="v6">
      <input type="radio" name="wunsch1" value="v7">

      aussehen. Aber was soll dann

      document.form1.wunsch1.focus();

      bewirken?

      viele Grüße

      Axel

      OK. Also ich habe es jetzt mal ohne array versucht wie Du das oben beschrieben hast. Mit dem Erfolg, dass jetzt zwar das Alert Fenster aufgeht. Aber nach Drücken von "OK" in diesem Fenster die Daten dennoch gesendet werden. Das wollte ich eigentlich mit
      document.form1.wunsch1.focus();
         return false;
      verhindern.
      Die inputs sehen so aus:
      <input type="radio" name="wunsch1" value="W1" >
      <input type="radio" name="wunsch1" value="W2" >
      etc.
      Gruß
      MAC

      1. Hallo,

        OK. Also ich habe es jetzt mal ohne array versucht wie Du das oben beschrieben hast.

        Wie ohne Array? Lass Dir doch nicht alle Informationen einzeln aus der Nase ziehen. Wie sah das INPUT-HTML vorher aus?

        Mit dem Erfolg, dass jetzt zwar das Alert Fenster aufgeht. Aber nach Drücken von "OK" in diesem Fenster die Daten dennoch gesendet werden.

        Ja, das ist logisch, weil...

        Das wollte ich eigentlich mit
        document.form1.wunsch1.focus();

        ^... hier ein Fehler erzeugt wird, denn es gibt mehrere Elemente mit dem Namen "wunsch1". Welches soll focusiert werden?

        return false;

        ^... und das damit gar nicht mehr wirksam wird.

        viele Grüße

        Axel

        1. Hallo,

          OK. Also ich habe es jetzt mal ohne array versucht wie Du das oben beschrieben hast.
          Wie ohne Array? Lass Dir doch nicht alle Informationen einzeln aus der Nase ziehen. Wie sah das INPUT-HTML vorher aus?

          Mit dem Erfolg, dass jetzt zwar das Alert Fenster aufgeht. Aber nach Drücken von "OK" in diesem Fenster die Daten dennoch gesendet werden.
          Ja, das ist logisch, weil...

          Das wollte ich eigentlich mit
          document.form1.wunsch1.focus();
                            ^... hier ein Fehler erzeugt wird, denn es gibt mehrere Elemente mit dem Namen "wunsch1". Welches soll focusiert werden?
             return false;
                ^... und das damit gar nicht mehr wirksam wird.

          viele Grüße

          Axel

          Hallo Axel
          Sorry wenn ich mich ein bischen dumm anstelle, aber ich bin halt kein professioneller Webdesigner.
          Also die alte input-html sah so aus:
          <input type="radio" name="wunsch1[]" value="W1" >
          <input type="radio" name="wunsch1[]" value="W2" > etc.
          Das habe ich aber wie gesagt jetzt schon mal fallen gelassen. Ist ja eigentlich bei radiobuttons Quatsch.

          Daneben habe ich noch weitere javascript Überprüfungen für Textfelder laufen die mit folgendem script prima funktionieren:

          if(document.form1.XY.value == "")  {
             alert("Bitte geben Sie XY ein!");
             document.form1.XY.focus();
             return false;
            }

          Deine Erklärung ist mir klar. Jetzt müsste ich nur noch wissen, wie ich dem script sage welches Element von wunsch1 es focusieren soll. Kannst Du mir da auf die Sprünge helfen?
          Danke
          Mac

          1. Hallo,

            Sorry wenn ich mich ein bischen dumm anstelle, aber ich bin halt kein professioneller Webdesigner.
            Also die alte input-html sah so aus:
            <input type="radio" name="wunsch1[]" value="W1" >
            <input type="radio" name="wunsch1[]" value="W2" > etc.
            Das habe ich aber wie gesagt jetzt schon mal fallen gelassen. Ist ja eigentlich bei radiobuttons Quatsch.

            Ja, das macht man, um Checkbox-Buttons mit PHP besser auswerten zu können, weil da mehrere ausgewählt werden können. Siehe http://www.php-faq.de/q/q-formular-checkbox.html

            Mit JavaScript angesprochen wäre das erste Element mit dem Namen "wunsch1[]" im Form "form1"

            document.form1.elements["wunsch1[]"][0]

            oder ganz ausführlich:

            document.forms["form1"].elements["wunsch1[]"][0]

            Siehe http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines.

            Deine Erklärung ist mir klar. Jetzt müsste ich nur noch wissen, wie ich dem script sage welches Element von wunsch1 es focusieren soll. Kannst Du mir da auf die Sprünge helfen?

            Wie prüfst Du denn, ob die einzelnen Elemente checked sind? Richtig, mit

            document.form1.wunsch1[0].checked
            document.form1.wunsch1[1].checked
            ...

            Was ist dabei document.form1.wunsch1[0], document.form1.wunsch1[1] ...?

            viele Grüße

            Axel

            1. Hallo,

              Sorry wenn ich mich ein bischen dumm anstelle, aber ich bin halt kein professioneller Webdesigner.
              Also die alte input-html sah so aus:
              <input type="radio" name="wunsch1[]" value="W1" >
              <input type="radio" name="wunsch1[]" value="W2" > etc.
              Das habe ich aber wie gesagt jetzt schon mal fallen gelassen. Ist ja eigentlich bei radiobuttons Quatsch.
              Ja, das macht man, um Checkbox-Buttons mit PHP besser auswerten zu können, weil da mehrere ausgewählt werden können. Siehe http://www.php-faq.de/q/q-formular-checkbox.html

              Mit JavaScript angesprochen wäre das erste Element mit dem Namen "wunsch1[]" im Form "form1"

              document.form1.elements["wunsch1[]"][0]

              oder ganz ausführlich:

              document.forms["form1"].elements["wunsch1[]"][0]

              Siehe http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines.

              Deine Erklärung ist mir klar. Jetzt müsste ich nur noch wissen, wie ich dem script sage welches Element von wunsch1 es focusieren soll. Kannst Du mir da auf die Sprünge helfen?
              Wie prüfst Du denn, ob die einzelnen Elemente checked sind? Richtig, mit

              document.form1.wunsch1[0].checked
              document.form1.wunsch1[1].checked
              ...

              Was ist dabei document.form1.wunsch1[0], document.form1.wunsch1[1] ...?

              viele Grüße

              Axel

              Hallo Axel,
              Danke für Deine Tipps. Jetzt hab' ich's endlich geschnallt.
              Meine Lösung:
               if(document.form1.wunsch1[0].checked == false
                && document.form1.wunsch1[1].checked == false
                 && document.form1.wunsch1[2].checked == false
                  && document.form1.wunsch1[3].checked == false
                    && document.form1.wunsch1[4].checked == false
                     && document.form1.wunsch1[5].checked == false
                && document.form1.wunsch1[6].checked == false)
                {
                 alert("Bitte geben Sie den Wunsch 1 ein!");
                 document.form1.wunsch1[0].focus();
                 return false;
              }
              Das funktioniert nun wie gewünscht! Mir war nicht klar, dass ich in der Prüfroutine mit eckigen Klammern arbeiten muss, wo ich doch im input (<input type="radio" name="wunsch1" value="W1" >)KEINE eckigen klammern verwende.
              Also nochmal dankeschön.
              Mac

  4. hi,

    Habe ich Tomaten auf den Augen

    Ja, vermutlich.

    Denn ohne hättest du ja die Tipps für Fragende finden, und anschließend ein Posting verfassen können, welches ein Mindestmaß an relevanten Informationen enthält.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }