girasol: EINEN Radiobutton abfragen

Hallo,

Ich habe da ein Problem mit einer Radionutten abfrage und habe daher das Forum durchsucht. Dabei bin ich auf einen Eintrag von Jenni, am 21. 05. 2003 gestossen.

Zitat Jenni:
"ich habe da mal ein Problemchen. Ich programmiere gerade eine sehr dynamische Datenbankverwaltung mit ASP und JavaScript. Dabei generiere ich auch automatisch (je nach Anzahl der Treffer) eine Liste mit Radio Buttons. Dabei kann es vorkommen, dass nur ein Radio Button zur Auswahl steht. Resultat: Es knallt mir alles um meine Ohren. Bei zwei oder mehr Buttons ist alles kein Thema."

Ich kämpfe zur Zeit mit dem selben Problem.
Die Lösung war dann das ganze mit einem Hiddenfeld zu machen. Nur dies ist mir nicht ganz klar! Wie mache ich dies mit einem Hiddenfeld? Kann mir da jemand weiter helfen, oder kann mir vielleicht sogar Jenni die damalige Lösung erklären?

Vielen Dank schon mal
Girasol

  1. Hi girasol!

    Resultat: Es knallt mir alles um meine Ohren.

    Was heißt das denn genau?

    Ich kämpfe zur Zeit mit dem selben Problem.
    Die Lösung war dann das ganze mit einem Hiddenfeld zu machen. Nur dies ist mir nicht ganz klar! Wie mache ich dies mit einem Hiddenfeld?

    Das ist mir auch nicht ganz klar. Die Problembeschreibung ist ziemlich ungenau. Und bist Du Dir sicher, dass Radiobuttons die richtige Lösung sind, wenn es auch vorkommen kann, dass es nur eine Auswahlmöglichkeit gibt? Kann man diesen Fall (nur eine Möglichkeit) nicht schon serverseitig abfangen und statt Radiobutton an der Stelle eine Checkbox einsetzen?

    mfG
    Benjamin

    --
    Selfcode: ie:} fl:{ br:> va:) ls:< fo:( rl:? n4:# ss:| de:] js:| ch:? sh:( mo:? zu:)
    "Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung."
    (Albert Einstein)
    1. Das ist mir auch nicht ganz klar. Die Problembeschreibung ist ziemlich ungenau. Und bist Du Dir sicher, dass Radiobuttons die richtige Lösung sind, wenn es auch vorkommen kann, dass es nur eine Auswahlmöglichkeit gibt? Kann man diesen Fall (nur eine Möglichkeit) nicht schon serverseitig abfangen und statt Radiobutton an der Stelle eine Checkbox einsetzen?

      Nun gut bei mir ist das "Es knallt mir alles um meine Ohren" bloss eine Java-Fehlermeldung, bzw. Fehlverhalten. D.h. Obwohl ein Radiobutton angewählt ist, behauptet die Java Prüfung es sei keiner angewählt. (Sorry, da bin ich zu wenig auf das Fehlverhalten bei mir eingegangen)

      Bei dem Programm handelt es sich um ein Tool zum Verwalten von Schulungen. Dabei werden mir 2 Listen angezeigt. Eine mit Mitarbeitern und eine andere mit Kursen. Am Ende der Jeweiligen Zeile befindet sich dann der Radiobutton welcher als value die ID aus der AccessDatenbank trägt. Durch auswählen eines Mitarbeiters und eines Kurses kann über einen Submit Button ein Mitarbeiter für einen Kurs angemeldet werden.
      Da es sich aber um rund 300 Mitarbeiter handelt habe ich eine Suchfunktion eingebaut, um beispielsweise nur alle Müllers anzeigen zu lassen und dort dann den entsprechenden auszuwählen. Was eigentlich auch funktioniert.
      Ergibt nun die Suche aber nur ein Ergebnis, also nur ein Müller, so erhalte ich die Meldung, dass ich keinen Mitarbeiter angewählt habe, auch wenn dem so ist.

      Die Prüfung dazu sieht wie folg aus:

      <script language="JavaScript" type="text/javascript">
       function fctAbschicken() {
        intCountUser = 0
        for(i = 0; i < document.anmeldung.userbutton.length; i++) {
         if(document.anmeldung.userbutton[i].checked) {
          intCountUser = 1
         }
        }

      if ( intCountUser == 0) {
         alert('Bitte wählen Sie einen Mitarbeiter aus.');
         return;
        }

      intCountKurs = 0
        for(i = 0; i < document.anmeldung.kursbutton.length; i++) {
         if(document.anmeldung.kursbutton[i].checked) {
          intCountKurs = 1
         }
        }

      if(intCountKurs == 0) {
         alert('Bitte wählen Sie einen Kurs aus.');
         return;
        }

      if ( intCountUser == 1 && intCountKurs == 1 ) {
         document.anmeldung.submit();
        }
       }
      </script>

      Hoffe es ist nun etwas klarer...

      Gruss

      1. Hi,
        bin nicht so der Javascript Fraggle,
        aber versuch doch einfach mal:

        i = 1; i <= document.anmeldung.userbutton.length; i++)

        Grüsse, Frank

      2. Hi girasol!

        Ergibt nun die Suche aber nur ein Ergebnis, also nur ein Müller, so erhalte ich die Meldung, dass ich keinen Mitarbeiter angewählt habe, auch wenn dem so ist.

        Das hängt vermutlich mit dem zusammen, was plan_B schon gesagt hat:

        if(document.anmeldung.userbutton[i].checked) {
            intCountUser = 1
           }

        "userbutton" ist also ein Array, das die Radiobuttons enthält? Wie wird das angelegt? Was passiert, wenn nur ein Button vorhanden ist?

        mfG
        Benjamin

        --
        Selfcode: ie:} fl:{ br:> va:) ls:< fo:( rl:? n4:# ss:| de:] js:| ch:? sh:( mo:? zu:)
        "Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung."
        (Albert Einstein)
      3. Die Prüfung dazu sieht wie folg aus:

        Es ist nicht besonders elegant.

        HTML:
        <form action=".." onsubmit="return fctAbschicken(this")>

        <script type="text/javascript">  
        function fctAbschicken(f) {  
           var check = false;  
           if(!f.userbutton.length ) check = f.userbutton.checked;  
           else {  
              for(var i = 0; i < f.userbutton.length; i++)  
                 if(f.userbutton[i].checked) check = true;  
           }  
           if ( !check ) {  
              alert('Bitte wählen Sie einen Mitarbeiter aus.');  
           }  
          
        .... die anderen Tests ...  
          
           return check;  
        }  
        </script>
        

        globale Variabeln sind schlecht, benutze var!
        In JS existiert ein boolscher Datentyp

        Struppi.

        1. Die Prüfung dazu sieht wie folg aus:

          Es ist nicht besonders elegant.

          HTML:
          <form action=".." onsubmit="return fctAbschicken(this")>

          <script type="text/javascript">

          function fctAbschicken(f) {
             var check = false;
             if(!f.userbutton.length ) check = f.userbutton.checked;
             else {
                for(var i = 0; i < f.userbutton.length; i++)
                   if(f.userbutton[i].checked) check = true;
             }
             if ( !check ) {
                alert('Bitte wählen Sie einen Mitarbeiter aus.');
             }

          .... die anderen Tests ...

          return check;
          }
          </script>

          
          >   
          > globale Variabeln sind schlecht, benutze var!  
          > In JS existiert ein boolscher Datentyp  
          >   
          > Struppi.  
            
            
          erst mal Danke für eure Hilfe!  
            
          Habe dies ausprobiert  
          Aber es führt mich stets zum fehler:  
          'userbutton.length' ist Null oder kein Objekt!  
            
            
            
            
          
          
          1. Aber es führt mich stets zum fehler:
            'userbutton.length' ist Null oder kein Objekt!

            In meinem Code steht nicht userbutton.length und Hast du den Aufruf der Funktion entsprechend geändert?

            Struppi.

            1. Aber es führt mich stets zum fehler:
              'userbutton.length' ist Null oder kein Objekt!

              In meinem Code steht nicht userbutton.length und Hast du den Aufruf der Funktion entsprechend geändert?

              Struppi.

              Doch, das userbutton.length gab es da bei:

              if(!f.userbutton.length ) check = f.userbutton.checked;

              Bin das ganze nochmals ganau durchgegangen, der Fehler lag aber wo anders. Und zwar bei einem Vertippsler, welchen ich auf Grund von Copy paste übersah.
              Bei:

              form action=".." onsubmit="return fctAbschicken(this")>

              ist das " und ) vertauscht.

              Habe dies angepasst und nun funktioniert es auch!!! Hurra!!!
              Besten Dank

              1. Bin das ganze nochmals ganau durchgegangen, der Fehler lag aber wo anders. Und zwar bei einem Vertippsler, welchen ich auf Grund von Copy paste übersah.
                Bei:

                form action=".." onsubmit="return fctAbschicken(this")>
                ist das " und ) vertauscht.

                stimmmt, dann wundert mich aber die Fehlermeldung.

                Habe dies angepasst und nun funktioniert es auch!!! Hurra!!!
                Besten Dank

                Bitte, kein Problem.

                Struppi.

                1. Bin das ganze nochmals ganau durchgegangen, der Fehler lag aber wo anders. Und zwar bei einem Vertippsler, welchen ich auf Grund von Copy paste übersah.
                  Bei:

                  form action=".." onsubmit="return fctAbschicken(this")>
                  ist das " und ) vertauscht.

                  stimmmt, dann wundert mich aber die Fehlermeldung.

                  Habe dies angepasst und nun funktioniert es auch!!! Hurra!!!
                  Besten Dank

                  Bitte, kein Problem.

                  Struppi.

                  Eine Frag ist nun aber doch noch aufgetaucht.

                  Wenn ich nund für die 2.Serie von Radiobuttens --> kursbutton den selben Check machen möchte, kann ich dann das selbe angepasste Skript:

                  if(!f.kursbutton .length ) check = f.kursbutton .checked;
                     else {
                        for(var i = 0; i < f.kursbutton .length; i++)
                           if(f.kursbutton [i].checked) check = true;
                     }
                     if ( !check ) {
                        alert('Bitte wählen Sie einen Kurs aus.');
                     }

                  vor " return check; " nochmals einfügen?

                  1. Struppi.

                    bitte zitiere nur das worauf sich deine Antwort bezieht (in diesem Fall gar nichts), so lesen sich deine Nachrichten besser, Danke!

                    Eine Frag ist nun aber doch noch aufgetaucht.

                    Wenn ich nund für die 2.Serie von Radiobuttens --> kursbutton den selben Check machen möchte, kann ich dann das selbe angepasste Skript:

                    if(!f.kursbutton .length ) check = f.kursbutton .checked;

                    Die Leerzeichen vor den Punkten sind hier fehl am Platz.

                    else {
                          for(var i = 0; i < f.kursbutton .length; i++)
                             if(f.kursbutton [i].checked) check = true;
                       }
                       if ( !check ) {
                          alert('Bitte wählen Sie einen Kurs aus.');
                       }

                    vor " return check; " nochmals einfügen?

                    Ja, das return check soll erst am Schluss der Funktion stehen, um das Formular entweder abschicken zu lassen (bei true) oder nicht (bei false)

                    Struppi.

                    1. Sorry, habe vergessen die Textvorgabe zuerst aus dem Nachrichtenfeld zu löschen.

                      Ok, werde ich so machen!

                      Vielen Dank nochmals

                      Guss
                      Girasol

  2. Hallo,

    nehme mal an, dein Script erwartet immer ein Array, wenn es die Radiobuttons abfragt. Bei nur einem Radiobutton erhält du aber nur ein Element.

      
    var rbs=document.forms[0].elements.myradiobutton;  
    if (!rbs) alert("keine Radiobuttons")  
    else if(! rbs.length ) rbs=new Array(rbs);  
      
    var z=0;  
    for (var i=0;i<rbs.length;i++){  
      z++;  
      }  
    alert("es gibt: "+ z +" Radiobuttons");  
    
    

    Gruß plan_B

    --
         *®*´¯`·.¸¸.·
  3. Hi!

    Ich habe da ein Problem mit einer Radionutten abfrage und habe daher das Forum durchsucht. Dabei bin ich auf einen Eintrag von Jenni, am 21. 05. 2003 gestossen.

    Du suchst Telefonsex im Radio? Oder was?

    Bin ich eigentlich der einzige hier, dessen Phantasie amok laeuft, wenn er sich ueberlegt, was Radionutten sind? *denk* :)

    1. Hallo Steel,

      Bin ich eigentlich der einzige hier, dessen Phantasie amok laeuft, wenn er sich ueberlegt, was Radionutten sind? *denk* :)

      ich würde nicht sagen, dass meine Phantasie Amok läuft - aber ich bin beim Lesen auch kurz gestolpert und dachte, "ups, was sind wohl Radionutten?"

      So long,
       Martin

      --
      Zum Glück ist alles nur halb so doppelt.