Leeloo5E: Problem bei Prüfen, ob Radiobutton ausgewählt

Hallo,

habe eine dynamische Liste von Radiobuttons. Diese sollen auf Aktivierung überprüft werden. Also mindestens einer soll ausgewählt werden bevor es weiter geht. Bei mehr als zwei Radiobuttons ist das auch kein Problem. Wenn jedoch nur einer da ist, denkt JavaScript es wäre gar keiner ausgewählt, obwohl er angewählt wurde. Also kann es hier net weiter gehen.

Der JavaScript-Code:

  
  
var alleFalse = true;  
  
for(i = 0; i < document.formular.radios.length; i++) {  
  
 if(document.formular.radios[i].checked == true)  {  
  alleFalse = false;  
  break;  
 }//end if  
  
}//end for  
  
if (alleFalse == true) {  
 alert("Bitte eine Auswahl treffen!");  
 return false;  
}//end if  
  

Die Fehlerkonsole gibt diesbezüglich auch nichts her.

Fehler im Skript oder was is da los?

Gruß,
Leeloo

--
"Als es noch keine Computer gab, war das Programmieren noch relativ einfach." - Edsger W. Dijkstra
  1. Hi,

    habe eine dynamische Liste von Radiobuttons. Diese sollen auf Aktivierung überprüft werden. Also mindestens einer soll ausgewählt werden bevor es weiter geht. Bei mehr als zwei Radiobuttons ist das auch kein Problem. Wenn jedoch nur einer da ist, denkt JavaScript es wäre gar keiner ausgewählt, obwohl er angewählt wurde.

    was ist denn in diesem Fall document.formular.radios gegenüber dem Fall, dass mehrere Radiobuttons vorliegen?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo,

      Hi,

      habe eine dynamische Liste von Radiobuttons. Diese sollen auf Aktivierung überprüft werden. Also mindestens einer soll ausgewählt werden bevor es weiter geht. Bei mehr als zwei Radiobuttons ist das auch kein Problem. Wenn jedoch nur einer da ist, denkt JavaScript es wäre gar keiner ausgewählt, obwohl er angewählt wurde.

      was ist denn in diesem Fall document.formular.radios gegenüber dem Fall, dass mehrere Radiobuttons vorliegen?

      Bei mehreren Radiobuttons ist document.formular.radios ein Array. Und bei diesem kann man die Anzahl jener Elemente ermitteln (length).
      Wenn nur einer da ist, wäre die Länge was? Nicht definiert? In dem Fall wäre document.formular.radios auch kein Array. Oder was? Also bräuchte ich eine Funktion, die prüft, ob document.formular.radios ein Array ist oder nicht? Gibt es sowas wie is_array() ???

      Ich hab auch schon weiter gedacht. Bin aber an diesem Punkt gescheitert. Mag daran liegen, dass mir die Möglichkeiten von JavaScript noch nicht komplett bekannt sind ... leider.

      Gruß,
      Leeloo

      --
      "Als es noch keine Computer gab, war das Programmieren noch relativ einfach." - Edsger W. Dijkstra
      1. Hi,

        Bei mehreren Radiobuttons ist document.formular.radios ein Array. Und bei diesem kann man die Anzahl jener Elemente ermitteln (length).

        jupp.

        Wenn nur einer da ist, wäre die Länge was? Nicht definiert?

        Ja. Genauer gesagt: undefiniert. Noch genauer: undefined.

        In dem Fall wäre document.formular.radios auch kein Array. Oder was? Also bräuchte ich eine Funktion, die prüft, ob document.formular.radios ein Array ist oder nicht?

        Korrekt.

        Gibt es sowas wie is_array() ???

        Sowas wie, ja. Im Prinzip hast Du selbst aber oben schon gesagt, was Du brauchst.

        Ich hab auch schon weiter gedacht. Bin aber an diesem Punkt gescheitert. Mag daran liegen, dass mir die Möglichkeiten von JavaScript noch nicht komplett bekannt sind ... leider.

        Mir sind sie auch noch nicht komplett bekannt, ich lerne immer wieder dazu. Ich vermute aber, dass Du "if" bereits kennst ;-)

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hallo,

          Mir sind sie auch noch nicht komplett bekannt, ich lerne immer wieder dazu. Ich vermute aber, dass Du "if" bereits kennst ;-)

          Jupp, "if" kenn ich. Nur weiß ich leider immer noch nicht, wie ich diese Informationen verarbeiten soll:

            
            
          if (document.formular.radios == undefined)  
           if (document.formular.radios.checked == true)  
             ...  
            }  
          }  
            
          
          

          ???

          Gruß,
          Leeloo

          --
          "Als es noch keine Computer gab, war das Programmieren noch relativ einfach." - Edsger W. Dijkstra
          1. Hi,

            if (document.formular.radios == undefined)

            wer ist undefined? Kleiner Tipp: Es sind nicht die Schweizer, schon gar nicht Ricola, äh, radios.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
          2. Hi,

            if (document.formular.radios == undefined)

            nein, den Wert darfst du nicht direkt abfragen, dann kassierst du sofort eine Fehlermeldung. Nicht nur der Wert, sondern schon der Typ ist undefiniert.

            if (document.formular.radios.checked == true)

            Ein expliziter Vergleich eines boolschen Ausdrucks auf den Wert true ist so überflüssig wie der Test, ob Wasser nass ist.

            Ciao,
             Martin

            --
            Fettflecke werden wieder wie neu, wenn man sie regelmäßig mit etwas Butter einschmiert.
      2. Genau das ist das Problem, wenn nix ausgewählt ist gibts auch kein Array. So würde es funktionieren:

        for (i=0;i<document.forms[0].radios.length;i++)
        {
         if (document.forms[0].radios[i].checked)
         {
          user_input = document.forms[0].radios[i].value;
         }
        }
        if(typeof user_input == "undefined")
        {
         alert('Sie haben keinen Punkt ausgewaehlt');
        }

        ich habe mal angenommen das deine radioboxen den namen "radios" haben. Fals nicht "radios" durch den Namen deiner Radioboxen ersetzen.

        1. Hallo,

          Genau das ist das Problem, wenn nix ausgewählt ist gibts auch kein Array. So würde es funktionieren:

          for (i=0;i<document.forms[0].radios.length;i++)
          {
          if (document.forms[0].radios[i].checked)
          {
            user_input = document.forms[0].radios[i].value;
          }
          }
          if(typeof user_input == "undefined")
          {
          alert('Sie haben keinen Punkt ausgewaehlt');
          }

          hey, cool. das funzt :-)))

          ich habe mal angenommen das deine radioboxen den namen "radios" haben. Fals nicht "radios" durch den Namen deiner Radioboxen ersetzen.

          jupp, in meinen Beispielen heißen meine Radiobuttons "radios". Obwohl man aus ihnen keine Musik erwarten kann. ;-)

          Gruß und Danke nochmal,
          Leeloo

          --
          "Als es noch keine Computer gab, war das Programmieren noch relativ einfach." - Edsger W. Dijkstra
          1. Hallo,

            Genau das ist das Problem, wenn nix ausgewählt ist gibts auch kein Array. So würde es funktionieren:

            for (i=0;i<document.forms[0].radios.length;i++)
            {
            if (document.forms[0].radios[i].checked)
            {
              user_input = document.forms[0].radios[i].value;
            }
            }
            if(typeof user_input == "undefined")
            {
            alert('Sie haben keinen Punkt ausgewaehlt');
            }

            hey, cool. das funzt :-)))

            oder doch nicht. Ich bin verwirrt. Oder es liegt daran, dass Freitag ist. Also jetzt funzt es wieder net. Seite neu geladen, Cache gelehrt. Hallo!? Bin ich blöd. Nur 1 Radiobutton und es geht wieder nicht. *grmpf* Feierabend für heut, oder?!

            Gruß,
            Leeloo

            --
            "Als es noch keine Computer gab, war das Programmieren noch relativ einfach." - Edsger W. Dijkstra
          2. Hi,

            hey, cool. das funzt :-)))

            ja, es funzt. Schade nur, dass es nicht auch noch funktioniert. Der Code ist hinreichend dämlich.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. wenn du mir noch sagst warum, nehm ich deinen letzteren satz vieleicht sogar ernst...

              1. Hallo,

                wenn du mir noch sagst warum, nehm ich deinen letzteren satz vieleicht sogar ernst...

                Warum!? Das ist eine gute Frage. Wenn ich mir das so angugge, versuche ich ja wieder nur die Radios als Array auszuwerten. Nur wenn nur ein Radiobutton da ist, ists ja kein Array. Also ist user_input immer undefined, ob ich nun den einzigen Radiobutton angewählt habe oder nicht.

                Gruß,
                Leeloo

                --
                "Als es noch keine Computer gab, war das Programmieren noch relativ einfach." - Edsger W. Dijkstra
                1. Warum!? Das ist eine gute Frage. Wenn ich mir das so angugge, versuche ich ja wieder nur die Radios als Array auszuwerten. Nur wenn nur ein Radiobutton da ist, ists ja kein Array. Also ist user_input immer undefined, ob ich nun den einzigen Radiobutton angewählt habe oder nicht.

                  Hi

                  Der Satz war eigentlich auf Cheatah's Bemerkung mit dem dämlich bezogen.

                  Aber noch kurz zu deiner Feststellung: Ja das ist korrekt, wenn du nur einen Radio hast, funktioniert der Code sehr wahrscheinlich nicht. Aber! Wenn du nur einen einzigen Radio hast, hast du definitiv das Falsche Element gewählt, eine Checkbox würde dann da besser passen.

                  (Der Sinn von Radio's ist etwas auszuwählen aus mehreren Optionen)

                  1. Hallo,

                    Der Satz war eigentlich auf Cheatah's Bemerkung mit dem dämlich bezogen.

                    Jo, hab ich mir gedacht. Wollte aber mal die Diskussion weiter führen. Dämlich finde ich deinen Code übrigens nicht. Mag aber auch daran liegen, dass ich mich noch nicht so gut mit JavaScript auskenne. Ansonsten funktioniert er ja.

                    Aber noch kurz zu deiner Feststellung: Ja das ist korrekt, wenn du nur einen Radio hast, funktioniert der Code sehr wahrscheinlich nicht. Aber! Wenn du nur einen einzigen Radio hast, hast du definitiv das Falsche Element gewählt, eine Checkbox würde dann da besser passen.

                    (Der Sinn von Radio's ist etwas auszuwählen aus mehreren Optionen)

                    Jupp, stimmt. Allerdings ist meine Gruppe von Radiobuttons dynamisch angelegt. D.h. die Gruppe von 1 bis 99 oder mehr Radiobuttons haben. Sie dienen dazu, einen Datensatz auszuwählen, damit der User dann damit eine Funktion vollziehen kann. Und am Anfang ist es möglich, dass eben nur 1 Datensatz, also auch nur 1 Radiobutton vorhanden ist. Hier soll dann aber auch überprüft werden, ob dieser Radiobutton ausgewählt ist oder nicht.

                    Wenn es nur ein Radiobutton gibt, ist es kein Array mehr, sondern nur eine einfache Variable, glaube ich. Hab auch schon versucht, zu überprüfen, obs ne Variable ist oder nen Array, aber irgendwie will das auch nicht klappen. Jedenfalls ignoriert mein Browser mein JavaScript diesbezüglich. *grmpf* Irgendwas mach ich also falsch. Muss ich also weiter probieren, was mir allerdings wieder nen Haufen Zeit kostet.

                    Gruß,
                    Leeloo

                    --
                    "Als es noch keine Computer gab, war das Programmieren noch relativ einfach." - Edsger W. Dijkstra
                    1. Wenn du die dinger schon dynamisch erzeugst, würde ich überprüfen wieviele Button erzeugt wurden, fals nur einer ausgewählt wurde, soll dieser auch gleich vorselektiert sein. (Sonst nervst du den Benutzer nur)

                      so tuts:

                      ausgewaehlt = false;
                       if( typeof(document.forms[0].radios.checked) == "undefined" )
                       {
                        // mehrere checkboxen

                      for (i=0;i<document.forms[0].radios.length;i++)
                        {
                         if (document.forms[0].radios[i].checked)
                         {
                          ausgewaehlt = true;
                         }
                        }
                       }
                       else
                       {
                        // nur eine checkbox vorhanden
                        ausgewaehlt = document.forms[0].radios.checked;
                       }

                      wir kucken also erst mal ob wir mehrere checkboxen haben, und handeln dann das entsprechend. ist die variable "ausgewaehlt" = true, wurde was ausgewählt.

                      1. wir kucken also erst mal ob wir mehrere checkboxen haben, und handeln dann das entsprechend.

                        Dein Skript macht etwas anderes.

                        if( document.forms[0].radios.length)  
                        {  
                          // mehrere checkboxen  
                          
                          for (var i = 0; i < document.forms[0].radios.length; i++)  
                          {  
                           if (document.forms[0].radios[i].checked)  
                            ausgewaehlt = true;  
                          }  
                         }  
                         else  
                         {  
                          // nur eine checkbox vorhanden  
                          ausgewaehlt = document.forms[0].radios.checked;  
                         }  
                        
                        

                        Ich hab nicht alles gelesen, so stellst du fest ob mindestens eine checkbox in einer Gruppe von checkboxen angeklickt ist, wobei der Name schon auf die potentiellle Möglichkeit von Radioboxen hinweist.

                        Struppi.

                        --
                        Javascript ist toll (Perl auch!)
                        1. Ich hab nicht alles gelesen, so stellst du fest ob mindestens eine checkbox in einer Gruppe von checkboxen angeklickt ist, wobei der Name schon auf die potentiellle Möglichkeit von Radioboxen hinweist.

                          Ja dann lies mal den REst, genau das war die Aufgabe....

                          1. Ich hab nicht alles gelesen, so stellst du fest ob mindestens eine checkbox in einer Gruppe von checkboxen angeklickt ist, wobei der Name schon auf die potentiellle Möglichkeit von Radioboxen hinweist.

                            Ja dann lies mal den REst, genau das war die Aufgabe....

                            Hab ich mittlerweile gemacht, also einfach auf length checken

                            if( document.forms[0].radios.length)  
                            {  
                            // mehrere Elemente mit dem Namen 'radios'  
                            }  
                            else  
                            {  
                            // maximal ein Element mit dem Namen 'radios'  
                            }
                            

                            Struppi.

                            --
                            Javascript ist toll (Perl auch!)
                            1. Hallo,

                              Ja dann lies mal den REst, genau das war die Aufgabe....

                              Hab ich mittlerweile gemacht, also einfach auf length checken

                              if( document.forms[0].radios.length)

                              {
                              // mehrere Elemente mit dem Namen 'radios'
                              }
                              else
                              {
                              // maximal ein Element mit dem Namen 'radios'
                              }

                              
                              >   
                                
                              Hey, klasse. Jetzt gehts. Aber wirklich ;-)  
                                
                              Hab das ganze noch ein wenig verfeinert bzw. etwas hinzugefügt:  
                              ~~~javascript
                                
                              if ((typeof ausgewaehlt == "undefined") || (ausgewaehlt !== true)) {  
                               alert("Bitte etwas auswählen !");  
                               return false;  
                              }//end if  
                              
                              

                              Weil ohne gings net ;-)
                              Vorher hab ich "ausgwaehlt" noch auf FALSE gesetzt. Außerdem werd ich jetzt auch immer den 1. Radiobutton beim Aufruf automatisch anwählen.
                              Trotzdem ist so eine Überprüfung schon net schlecht.

                              THX euch allen.

                              Gruß,
                              Leeloo

                              --
                              "Als es noch keine Computer gab, war das Programmieren noch relativ einfach." - Edsger W. Dijkstra
                              1. Hey, klasse. Jetzt gehts. Aber wirklich ;-)

                                Hab das ganze noch ein wenig verfeinert bzw. etwas hinzugefügt:
                                [code lang=javascript]
                                if ((typeof ausgewaehlt == "undefined") || (ausgewaehlt !== true)) {

                                ^^^^^
                                Du meinst vermutlich !=

                                Die doppelte Überprüfung ist unnötig if (! ausgewaehlt)
                                macht das gleiche.

                                Struppi.

                                --
                                Javascript ist toll (Perl auch!)
  2. Moin!

    Bei mehr als zwei Radiobuttons ist das auch kein Problem. Wenn jedoch nur einer da ist, denkt JavaScript es wäre gar keiner ausgewählt, obwohl er angewählt wurde.

    Mal ganz blöd gefragt: Hälst du es für bedientechnisch sinnvoll, nur einen einzigen Radiobutton anzubieten? Warum muß der Benutzer diesen einzigen Radiobutton dann noch aktivieren, wenn sowieso keinerlei Auswahl vorgenommen werden kann?

    Eine passende Bezeichnung solcher Buttons wäre jedenfalls name="pandora" - denn nach der Aktivierung kriegt man ihn ja nie mehr inaktiv.

    Fehler im Skript oder was is da los?

    Du bist der akuten Problematikt zwar auf der Spur, dein Problem beginnt aber schon lange vorher, bei der Generierung der dynamischen Radiobuttonliste. Wenn es nur eine Auswahlmöglichkeit gibt - brauchst du keine Radios.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."