der bär: Radiobuttons checken?

Hi
Ich hab eine Gruppe von Radiobuttons, wie kann ich überprüfen ob einer der Radiobuttons ausgewählt wurde. Die Anzahl ist Variable, weil ein PHP Script die Anzahl generiert.
gruß der bär

  1. Hallo,

    also am Besten machst du dir eine kleine Funktion - du solltest dir noch irgendwo die Anzahl der Radio-Buttons halten, ich habe es jedenfalls mal so als Workaround gemacht, weil JS ein Array mit einer Länge für die Radiobuttons anlegt wenn es mehr als einen gibt, sonst aber nur eine einzelne Variable:
    function isSelected() {
    // als erstes überprüfen, ob die
    if (document.formularname.anzahlfeld.value == "1") {
      // es gibt nur einen Button, diesen prüfen
      if (document.formularname.radiobuttons.checked == true) {
       // ausgewählt
       return true;
      } else {
       // nicht ausgewählt
       return false;
      }
    }

    // ok, es gibt offenbar mehr als einen, also durchlaufen und Auswahl suchen
    // die Schleife gibt true zurück wenn sie eine Auswahl findet, ansonsten läuft sie durch und die Funktion stellt "keine Auswahl" fest
    for (i=0; i<document.formularname.radiobuttons.length; i++) {
     if (document.formularname.radiobuttons[i].checked==true) {
      return true;
     }
    }

    return false;
    }

    MfG
    Rouven

    --

    -------------------
    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
    1. Hi ich hab jetzt das draus gemacht allerdings funzt es immer noch net

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
      <head>
      <title>Untitled Document</title>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
      <script language="JavaScript">
      function check() {
      for (i=0; i<document.formularname.radiobuttons.length; i++) {
      if(document.form1.radiobutton[i].checked==true) {
      return true;
      }
      else
      {
      alert('uncheck');
      }
      }
      }
      </script>
      </head>

      <body>
      <form name="form1" method="post" action="">
        <input type="radio" name="radiobutton" value="radiobutton">
        <input type="radio" name="radiobutton" value="radiobutton">
        <input type="submit" name="Submit" value="Submit" onClick="return check()">
      </form>
      </body>
      </html>

      gruß der bär

      1. Sorry ich hab noch bemerkt das for schleife die namen falsch waren.
        Allerdings gibt es 2 Mal alert.
        Wie brech ich die Schleife denn ab?
        gruß

        1. Morgen!

          Du darfst in der Schleife im Else-Teil im Prinzip NICHTS machen - Warum? Weil du natürlich noch nicht entscheiden kannst, ob da nicht eventuell noch ein ausgewählter Button später kommt. Du musst im Prinip schon warten, ob die FOR-Schleife zu Ende durchläuft - An der Stelle, wo ich ein return false stehen hatte, vor dem Ende der Funktion, erst da kannst du (genauso wie bei dem return false oben) eine Fehlermeldung geben, aber nicht schon sobald einmal in der Schleife nichts ausgewählt ist.

          MfG
          Rouven

          --

          -------------------
          ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
          1. Morgen
            Und wie mach ich das genau?
            Sry ich bin nicht unbedingt der Crack in JS.
            gruß

            1. Hallo,

              da war kein großes Geheimnis, stand schon fast alles im Code:
              function isSelected() {
              // als erstes überprüfen, ob die
              if (document.formularname.anzahlfeld.value == "1") {
                // es gibt nur einen Button, diesen prüfen
                if (document.formularname.radiobuttons.checked == true) {
                 // ausgewählt
                 return true;
                } else {
                 // nicht ausgewählt
                 alert("Bitte markieren Sie den Radio-Button");
                 return false;
                }
              }

              // ok, es gibt offenbar mehr als einen, also durchlaufen und Auswahl suchen
              // die Schleife gibt true zurück wenn sie eine Auswahl findet, ansonsten läuft sie durch und die Funktion stellt "keine Auswahl" fest
              for (i=0; i<document.formularname.radiobuttons.length; i++) {
               if (document.formularname.radiobuttons[i].checked==true) {
                return true;
               }
              }
              alert("Bitte markieren Sie einen Radio-Button");
              return false;
              }

              MfG
              Rouven

              --

              -------------------
              ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
  2. Hi,

    Ich hab eine Gruppe von Radiobuttons, wie kann ich überprüfen ob einer der Radiobuttons ausgewählt wurde. Die Anzahl ist Variable, weil ein PHP Script die Anzahl generiert.

    Das Problem hierbei ist, das nur _mehrere_ Radios einen Array bilden, sollte Dein Php mal lediglich einen Radio auswerfen gibt es dann einen JS-Error, wenn Du versuchst auf document.FORMNAME.RADIONAME[0]zuzugreifen. So kannst Du das abfangen:

    <html>
    <head>

    <title>test</title>

    <script language="javascript1.2" type="text/javascript">

    function getRadio() {
      // einer oder mehrere?
     var selCnt =  document.test.sel.length || 0;
     var sel    =  "nix";
     if (selCnt) {
      for (var i = 0; i < selCnt; i++) {
       if (document.test.sel[i].checked) sel =  document.test.sel[i].value;
      }
     } else {
      if (document.test.sel.checked) sel =  document.test.sel.value;
     }
     alert(sel);
    }

    </script>

    </head>
    <body>
    <form name="test" method="get">
     <input type="radio" name="sel" value="1">1<br>
       <input type="radio" name="sel" value="2">2<br>
     <input type="radio" name="sel" value="3">3<br>
    </form>
    <br><br>
    <a href="#" onclick="getRadio(); return false;">test</a>
    </body>
    </html>

    Gruesse  Joachim

  3. Hi
    Ich hab eine Gruppe von Radiobuttons, wie kann ich überprüfen ob einer der Radiobuttons ausgewählt wurde. Die Anzahl ist Variable, weil ein PHP Script die Anzahl generiert.

    checked kennst du ja schon http://www.netzwelt.com/selfhtml/javascript/objekte/elements.htm#checked

    dir hilft der this Zeiger noch weiter.

    <form ....onsubmit="return check(this);">
      <input type="radio" name="radiobutton" value="radiobutton">
      <input type="radio" name="radiobutton" value="radiobutton">
      <input type="radio" name="radiobutton" value="radiobutton">

    ...
    </form>

    <script type="text/javascript">

    function check(form)
    {
    if(!form.radiobutton.length) return form.radiobutton.checked;
    for(var i = 0; form.radiobutton[i]; i++)
    if(form.radiobutton[i].checkd == true) return true;

    return false;
    }
    </script>

    Struppi.