Gabi: Radio box prüfen, Pflichtfeld

Guten Morgen zusammen.
Ich komme mit meinem Problem "Radiobox" als Pflichtfeld prüfen nicht weiter.
Vieles habe ich hier schon gelesen und immer bin ich der Sache noch nicht auf den Grund gekommen.

Mein Datei Inhalt der formular.html Datei

.
.
.
function chkFormular()
{
 if(window.document.form.Roentgenklasse[0].checked == false;)
 {
  window.document.form.Roentgenklasse.focus();
  validity = false;
  alert("Bitte geben Sie die Größe die Röntgenklassse an!");
  return validity;
 }
return validity;
}
.
.
.
if(window.document.form.from_standort.value == "")
 {
  window.document.form.from_standort.focus();
  validity = false;
  alert("Bitte geben Sie den Standort an!");
  return validity;
 }
.
</head>
<body>
.
.
.
.
.

<form name="form" action="/eintrag/formular_senden.php" method="post" onsubmit="return chkFormular()" >
.
.
Standort: *<br>
<input name="from_standort" type="text" size="40" value="">
.
.
Röntgenklasse: *<br>
<input name="Roentgenklasse" type="radio" value="1"  /> 1&nbsp;&nbsp;
<input name="Roentgenklasse" type="radio" value="2"  /> 2&nbsp;&nbsp;
<input name="Roentgenklasse" type="radio" value="3"  /> 3&nbsp;&nbsp;
<br>
.
.
.
<input type="submit" value="Formular absenden"
</form>

Der  Ausdruck "if(window.document.form.Roentgenklasse[0].checked == false;)"  bringt mich nicht weiter.

Ich habe es mit dem Zähler 1 u. auch 2 probiert, mit nur der leeren Klammer[], auch ohne die Klammer, doch in keinem meiner Versuche wurde dieser Ausdruck berücksichtigt.
Das Formular immer abgesendet ohne das eine der gewünschten Radio boxen gedrückt wurde.

Wo liegt mein problem ??
Ich sehe es nicht.

Mir ist auch noch nicht klar wie das überhaupt richtig abgefragt wird.
Denn wenn man mit Roentgenklasse[0],Roentgenklasse[1],Roentgenklasse[2] abfragt sind immer zwei davon nicht gedrückt, einer soll unbedingt gedrückt sein. wie fragt man also diese Gruppe Roentgenklasse sinnvoll ab?

Ein weiters Problem ist noch die Abfrage des Feldes "from_standort" auf nur Leerzeichen?
Womit fragt man denn in js ab, ob "from_standort" nicht aus "   " (Blanks/Leerzeichen) besteht und somit inakzeptabel ist?

Danke herzlichst für eure Hilfe
Gruß Gabi

  1. Hi!

    Also um die Radiobutton zu checken wäre das hier mein Denkansatz:

    if (document.form.Roentgenklasse[0].checked == true) {

    } else if (document.form.Roentgenklasse[1].checked == true) {

    } else if (document.form.Roentgenklasse[2].checked == true) {

    } else {
     alert("Bitte geben Sie die Größe die Röntgenklassse an!");
    }

    hoffe das hilft dir ein bißchen weiter

    1. Hi!

      Also um die Radiobutton zu checken wäre das hier mein Denkansatz:

      if (document.form.Roentgenklasse[0].checked == true) {

      } else if (document.form.Roentgenklasse[1].checked == true) {

      } else if (document.form.Roentgenklasse[2].checked == true) {

      } else {
      alert("Bitte geben Sie die Größe die Röntgenklassse an!");
      }

      hoffe das hilft dir ein bißchen weiter

      ups,
      das hatte ich noch nicht gelesen...
      probiere es gleich mal aus.
      Danke

    2. Hi!

      Also um die Radiobutton zu checken wäre das hier mein Denkansatz:

      if (document.form.Roentgenklasse[0].checked == true) {

      } else if (document.form.Roentgenklasse[1].checked == true) {

      } else if (document.form.Roentgenklasse[2].checked == true) {

      } else {
      alert("Bitte geben Sie die Größe die Röntgenklassse an!");
      }

      hoffe das hilft dir ein bißchen weiter

      Hallo,
      dein Vorschlag ist interessant.
      Aber geht das nicht auch in einer Schleife ??

      Ich fand dazu dasfolgende Code schnipsel:
      function checkForm() {
         var arrBoxen = document.getElementsByName("checkboxen[]");
         for (var i = 0; i < arrBoxen.length; i++) {
          if(arrBoxen[i].checked == true) {
           alert(arrBoxen[i].id)
          }
         }
        }

      habe dann meines so bageändert:

      function chkFormular()
      {

      validity = true; // assume valid

      window.document.form.from_standort.value=basicTrim(window.document.form.from_standort.value);
       if(window.document.form.from_standort.value == "")
       {
        window.document.form.from_standort.focus();
        validity = false;
        alert("Bitte geben Sie den Standort an!");
        return validity;
       }

      var arrBoxen = document.getElementsByName("Roentgenklasse[]");
      for (var i = 0; i < arrBoxen.length; i++)
       {
        if(arrBoxen[i].checked == true)
        {
                validity = false;
                              alert("Bitte geben Sie die  Röntgenklassse an! "+arrBoxen.length);
         return validity;
        }
       }

      Im Html-Teil habe ich so abgeändert:
      <input name="Roentgenklasse[]" type="radio" value="1"  /> 1&nbsp;&nbsp;
            <input name="Roentgenklasse[]" type="radio" value="2"  /> 2&nbsp;&nbsp;
            <input name="Roentgenklasse[]" type="radio" value="3"  /> 3&nbsp;&nbsp;

      Es funktioniert aber nicht!!!

      Hat jemand eien Idee ??
      Danke
      Gabi

  2. Zum Trimmen von Leerzeichen habe ich inzwischen doch noch etwas sehr interessantes hier im Forum gefunden:
    http://forum.de.selfhtml.org/archiv/2005/4/t106433/#m659975

    Zu meinem Radio Abfrage Problem habe ich inzwischen einen grundsätzlichen Fehler eleminieren können

    window.document.form.Roentgenklasse.focus();
    Diese Zeile muss raus, die ist auf Radio offensichtlich nicht anwendbar und führt offenbar zum sofortigen Abbruch der Funktion.

    Jetzt nach löschen o.a. Zeile funktioniert wenigstens schon eine Abfrage der Art

    if(window.document.form.Roentgenklasse[0].checked == false)
     {
      validity = false;
      alert("Bitte geben Sie die  Röntgenklassse an!");
      return validity;

    }

    Soweit habe ich mir also schon helfen können.

    Es bleibt noch ungelöst wie man alle 3Felder von window.document.form.Roentgenklasse[]  gescheit abfragen kann, ob mindestens einer davon gedrückt ist.

    Hat da jemand eine Idee ??

    Vieln Dank
    Gabi

    1. Hat da jemand eine Idee ??

        
      var roentgen=document.form.Roentgenklasse;  
      var validity=false;  
      for (var i=0; i<roentgen.length; i++) {  
       validity=(validity || roentgen[i].checked);  
      }  
      if (!validity) alert("Bitte geben Sie die Röntgenklassse an!");  
      return validity;  
      
      

      hier könntest du theoretisch auch mehr oder weniger (mindestens aber 2) Roentgenklassefelder einfügen, das Script prüft selbst wieviele es gibt.

      1. Danke,
        kannst du mir diesen Ausdruck erklären ??

        validity=(validity || roentgen[i].checked);
        Den versteh ich noch nicht!!

        Gabi

        Hat da jemand eine Idee ??

        var roentgen=document.form.Roentgenklasse;
        var validity=false;
        for (var i=0; i<roentgen.length; i++) {
        validity=(validity || roentgen[i].checked);
        }
        if (!validity) alert("Bitte geben Sie die Röntgenklassse an!");
        return validity;

        
        >   
        > hier könntest du theoretisch auch mehr oder weniger (mindestens aber 2) Roentgenklassefelder einfügen, das Script prüft selbst wieviele es gibt.
        
        1. kannst du mir diesen Ausdruck erklären ??

          validity=(validity || roentgen[i].checked);

          roentgen[i].checked liefert true oder false

          || ist ein oder

          validity kann false oder true sein

          also gibts diese 4 Möglichkeiten für (validity || roentgen[i].checked)

          (false || false) ergibt false
          (false || true) ergibt true
          (true || false) ergibt true
          (true || true) ergibt true

          spätestens also wenn einmal eine Checkbox ein Häkchen hatte wird validity auf true gesetzt und das bleibt dann auch so.

          1. Vieln Dank für die erklärung,

            Aber ist denn dann deine dritte Zeile überhaupt richtig ??
            müsste das nicht auch als Ergebnis (true || false) ergibt false haben  ??

            Gabi

            1. Aber ist denn dann deine dritte Zeile überhaupt richtig ??
              müsste das nicht auch als Ergebnis (true || false) ergibt false haben  ??

              nein, || ergibt true solange mindestens einer der Ausdrücke true ist

        2. Hallo,
          habe inzwischen deinen Vorschlag getestet.

          Zuerst ging es nicht.
          doch dann habe ich Probeweise die "[]" im  Input-Tag ebenfalls entfernt,  da funktionierte es dann doch.

          Inzwischen habe ich deinen Vorschlag etwas zu einer Funktion modifiziert, denn ich habe  nicht nur Röntegenklasse, sondern auch noch Groessenklasse und einige andere Radio abfragen.
          Es sieht jetzt so bei mir aus

          function radiocheck(pruefen,txt)
           {
           var validity=false;
           for (var i=0; i<pruefen.length; i++) {
             validity=(validity || pruefen[i].checked);
           }
           if (!validity)
           {
           alert(txt);
           }
           return validity;
           }

          function chkFormular()
          {

          validity = true; // assume valid

          window.document.form.from_standort.value=basicTrim(window.document.form.from_standort.value);
           if(window.document.form.from_standort.value == "")
           {
            window.document.form.from_standort.focus();
            validity = false;
            alert("Bitte geben Sie den Pferdestandort an!");
            return validity;
           }

          validity = radiocheck(document.form.Roentgenklasse,"Bitte geben Sie die Röntgenklasse an!");
          if (!validity)
          {
          return validity;
          }

          validity = radiocheck(document.form.Groessenklasse,"Bitte geben Sie die Größenklasse an!");
          if (!validity)
          {
          return validity;
          }
          .
          .
          .

          <form name="form" action="/****.php" method="post" onsubmit="return chkFormular()" >
          .
          Röntgenklasse: *<br>
          <input name="Roentgenklasse" type="radio" value="1"  /> 1&nbsp;&nbsp;
          <input name="Roentgenklasse" type="radio" value="2"  /> 2&nbsp;&nbsp;
          <input name="Roentgenklasse" type="radio" value="3"  /> 3&nbsp;&nbsp;
          <br><br>
          Größenklasse: *<br>
          <input type="radio" value="S"  name="Groessenklasse" > S&nbsp;&nbsp;
          <input type="radio" value= "M" name="Groessenklasse" > M&nbsp;&nbsp;
          <input type="radio" value= "L"  name="Groessenklasse" > L&nbsp;&nbsp;
          <input type="radio" value= "XL" name="Groessenklasse" > XL
          .
          .
          .
          </form>

          So kann ich nun jede Gruppe von Radiobuttons auf Pflichteingabe prüfen.
          Gibt es dort noch Optimierungs möglichkeiten??
          Z.B. das java script selbts die Namen der Gruppe erkennen / lesen  zu lassen ??

          Vielen Dank
          GABI

          1. function chkFormular()
            {

            validity = true; // assume valid

            besser

            var validity = true;

            dann weiß der Browser, dass damit definitiv keine anderen Variablen gleichen Namens in anderen Scriptteilen gemeint sind.

            Gibt es dort noch Optimierungs möglichkeiten??

            höchstens stilistischer Natur

            Z.B. das java script selbts die Namen der Gruppe erkennen / lesen  zu lassen ??

            die Erkennungsroutine dürfte aufwändiger sein, als deine jetzige Lösung.