Icebaer: Drei Radiobuttons prüfen

Ich suche ein Script, um zu ermitteln, ob einer von drei Radiobuttons angeklickt wurde.
Erfolglos sind:
function checkForm()

//====== Prueft Radiobuttons ======Variante 1 --- geht net...

{

if(document.mitglied.elements[0].checked == false && document.mitglied.elements[1].checked == false && document.mitglied.elements[2].checked == false)

{
alert (" Wählen Sie bitte die Mitgliederart aus. ");
document.mitglied.elements[0].focus();

return false
}

//====== Prueft Radiobuttons ======Variante 2 --- geht auch net...
{

if(document.mitglied.elements[0].checked == true || document.mitglied.elements[1].checked == true || document.mitglied.elements[2].checked == true)

{return true;}

else
{
alert (" Wählen Sie bitte die Mitgliederart aus. ");

return false;
}

Ich bin am verzweifeln!!

Danke für die Hilfe ;-)

  1. Hallo

    vielleicht kannst du dir hir das passende nehmen.

    http://grassegger.at/gitter.at/index2.php

    Wenn du ein Modell auswählst und dann 3 Checkboxen anklicken versuchst...

    HTH

    Werner

  2. Hi,

    Ich suche ein Script, um zu ermitteln, ob einer von drei Radiobuttons angeklickt wurde.

    Du musst alle Buttons ueberpruefen - am Besten in einer Schleife - und im Erfolgsfalle einen "Merker" setzen. Anschliessend erfolgt die gewuenschte Reaktion.

    Ich bin am verzweifeln!!

    Nicht doch, Script anbei, flog hier noch rum...

    Gruesse  Joachim

    <html>
    <head>

    <script language="javascript1.2" type="text/javascript">
    function go() {
     // flag merkt sich Wert oder bleibt false
     var flag =  false;
     // Schleife laeuft ueber Radio-Array und prueft jeden Button
     for (var i = 0; i < document.dpl.rd.length; i++) {
      if (document.dpl.rd[i].checked) flag =  document.dpl.rd[i].value;
     }
     if (flag) alert (flag);
     else      alert ("nix");
    }
    </script>

    </head>
    <body>
    <form Name="dpl">
        <input type="radio" name="rd" value="1">
        <input type="radio" name="rd" value="2">
        <input type="radio" name="rd" value="3">
        <input type="button" value="go" onclick="go()">
    </form>

    </body>
    </html>

    1. Ein paar kleine Optimierungen:

      <html>
      <head>

      Den DOCTYPE hast du nur vergessen, oder?

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

      wozu javascript1.2? Das skript sollte sogar mit Netscape 2 laufen.

      function go() {

      Einfacher ist es die Formular referenz direkt zu übergeben:

      HTML:
      <input type="button" value="go" onclick="go(this.form)">

      function go(form) {

      spart eine Menge Tipparbeit.

      // flag merkt sich Wert oder bleibt false
      var flag =  false;
      // Schleife laeuft ueber Radio-Array und prueft jeden Button
      for (var i = 0; i < document.dpl.rd.length; i++) {
        if (document.dpl.rd[i].checked) flag =  document.dpl.rd[i].value;

      Wenn's eine Radiogroup ist gibt es eh nur ein angeklicktes Kästchen:

      if(!form.rd[i].checked) continue;
      flag = form.rd[i].value;
      break;

      }
      if (flag) alert (flag);
      else      alert ("nix");
      }
      </script>

      Struppi.

    2. Hallo

      Du musst alle Buttons ueberpruefen - am Besten in einer Schleife - und im Erfolgsfalle einen "Merker" setzen. Anschliessend erfolgt die gewuenschte Reaktion.

      Ich habe dein Script eingebaut, aber irgendwo scheint noch was nicht zu stimmen...geht dieser Script nicht mit "function checkForm()"?Ich prüfe drum noch anderer Felder...

      Findest du den Fehler?

      <SCRIPT LANGUAGE="JavaScript">

      function checkForm()
      {

      var flag =  false;
       // Schleife laeuft ueber Radio-Array und prueft jeden Button
       for (var i = 0; i < document.mitglied.typ.length; i++) {
        if (document.mitglied.typ[i].checked) flag =  document.mitglied.typ[i].value;
       }
       if (flag) alert (flag);
       else      alert ("nix");
      }
      .
      .
      .
      //dann werden andere Felder geprüft, zB.
      if(document.mitglied.vorname.value=="")
      {
      alert ("Bitte Vornamen eingeben");
      document.mitglied.vorname.focus();
      return false;
      }
      .
      .
      .
      td><input type="radio" name="typ" value="einzel">
                    Einzelmitglied</td>
                  <td><input type="radio" name="typ" value="familie">
                    Familie</td>
                  <td><input type="radio" name="typ" value="verein_firma">
                    Verein / Firma<br>
      .
      .
      .
      <input type="submit" name="MOSubmit" value="anmelden"
         onclick="return checkForm()"

      Danke für die Geduld mit mir ;-)

      gruss
      Icebaer

  3. //====== Prueft Radiobuttons ======Variante 1 --- geht net...
    //====== Prueft Radiobuttons ======Variante 2 --- geht auch net...

    "geht net" ist keine Fehlerbeschreibung mit der jemand was anfangen kann. Mit Mozilla kommt eine Javascript Konsole die dir sehr detaliert Fehlermeldungen ausgibt, darüber hinaus solltest du testen ob die Objekte die du verwenden möchtest existieren und beim entwickeln dir die Werte evtl. ausgeben lassen.

    Z.b.
    if(document.mitglied)
    {
    .... Das Formular existiert ....
    }
    else
    {
    Fehler das Formular existiert nicht.
    }

    aber das was du anbietest reicht nicht um dir wirklich zu helfen.

    Struppi.

    1. "geht net" ist keine Fehlerbeschreibung mit der jemand was    anfangen kann...

      da hast du recht!
      also das script fragt die radiobuttons ab, bemerkt, dass kein Button angeklickt ist, die Meldung "Wählen Sie Bitte..." erscheint.
      Wenn ich dann einen Button anklicke und wieder auf den "submit" klicke, erscheint wieder wählen sie bitte...". Ich bin also in einer Endlosschleife.

      Was ist überhaut gescheiter:
      if(...checked == false  && ...checked == false)  --> return false

      oder
      if(...checked == true  || ...checked == true)  --> return true
      else

      ...darüber hinaus solltest du testen ob die Objekte die du  verwenden möchtest existieren und beim entwickeln dir die Werte evtl. ausgeben lassen.

      Hab ich soweit ich das beurteilen kann schon geprüft.
      Hier die Angaben zum Form,
      die Radios sind element 0, 1, 2

      <form action="mailopen1.php" method="post" name="mitglied" id="mitglied">
       <td><input type="radio" name="typ" value="einzel">
                    Einzelmitglied</td>
                  <td><input type="radio" name="typ" value="familie">
                    Familie</td>
                  <td><input type="radio" name="typ" value="verein_firma">
                    Verein / Firma<br>

      und hier noch die Angaben zum "submit":
      <input type="submit" name="MOSubmit" value="anmelden"
         onclick="return checkForm()"

      1. Was ist überhaut gescheiter:
        if(...checked == false  && ...checked == false)  --> return false

        oder
        if(...checked == true  || ...checked == true)  --> return true
        else

        letztlich egal.

        ...darüber hinaus solltest du testen ob die Objekte die du  verwenden möchtest existieren und beim entwickeln dir die Werte evtl. ausgeben lassen.

        Hab ich soweit ich das beurteilen kann schon geprüft.
        Hier die Angaben zum Form,
        die Radios sind element 0, 1, 2

        Nee, hast du nicht.
        wo ist if(document.mitglied) .... if(document.mitglied.elements)

        <form action="mailopen1.php" method="post" name="mitglied" id="mitglied">
         <td><input type="radio" name="typ" value="einzel">
                      Einzelmitglied</td>
                    <td><input type="radio" name="typ" value="familie">
                      Familie</td>
                    <td><input type="radio" name="typ" value="verein_firma">
                      Verein / Firma<br>

        und hier noch die Angaben zum "submit":
        <input type="submit" name="MOSubmit" value="anmelden"
           onclick="return checkForm()"

        und hier kannst du es dir einfacher machen:
        <input type="submit" name="MOSubmit" value="anmelden"
         onclick="return checkForm(this.form)">

        besser noch im form Tag:

        <form action="mailopen1.php" method="post" name="mitglied" id="mitglied"
        onsubmit="return checkForm(this);">

        function checkForm(form)
        {
        und hier hast du dann:
        form => das Formular
        form.typ => deine Radiogroup (mit der Eigenschaft length)

        Also testen:
        if(!form && !form.type) return confirm('Es trat ein Fehler auf');

        und dann alle Typen durchlaufen:
        for(var i = 0; form.typ[i]; i++) if(form.typ[i].checked) return true;
        return false;

        Struppi.