DocMcSky: gewählten Radiobutton Wert auslesen

Hallo liebe Gemeinde,

ich denke das meine Frage nicht die erste sein wird, ich habe auch schon einiges im Netz gefunden, aber eine wirklich 100%ige Antwort auf meine Frage nicht, daher möchte ich mein Problem nochmal genau schildern, ich denke ihr wisst wie ihr mir helfen könnt:

Ich habe in einem <form> Feld u.a. 2 Serien Radiobuttons. Diese interagieren miteinander und sollen eine gewisse Operation an einer anderen Stelle der Webseite ausgeben, was ja mittels JS kein Problem darstellt.

Soweit, so gut. Nach jedem Klick eines Radiobuttons wird also eine JS-Funktion aufgerufen, die nun den neuen Radiowert und den aus der zweiten Serie in eine bestimmte Operation bringt.

Nun, es ist ja kein Problem den Value-Wert eines Radiobuttons abzufragen, das mache ich dann z.B. (ausführlich) mit:

  
 var wert1 = document.forms.ksk.front[pos].value  

...wobei "pos" dann genau der Radiobutton sein muss, der "checked" ist um den richtigen Wert zu erhalten.

So, jetzt meine Frage:
Wie weiß ich denn, welcher Radiobutton gerade geklickt wurde bzw welcher Button der anderen Serie (in meinem Fall "rear") geklickt ist?
Ich habe die Möglichkeit mit einer Schleife alle "front" und "rear" Radiobuttons zu durchsuchen und die, die dann checked sind weiterzubearbeiten, aber das kann doch nicht die ultimative Lösung sein, oder?

Gibt es bei den Radiobuttons irgendein Element, welches die Indexnummer des gerade aktiven Buttons enthält?

Wäre nett, wenn einer ne bessere Lösung als die umständliche Schleifenlösung hätte.
Danke im Voraus.

Gruß
Doc

  1. Hi.

    du könntest doch beim Klick von front oder von rear, dir den gerade geklickten Wert in einer Variable merken.

    So brauchst du dann die jeweils andere Gruppe nicht mehr zu durchlaufen.

    Du hast ja irgendwie das click Event registriert. Entweder im HTML oder per JS.

    Du bekommst den geklickten Radiobutton über das Event Objekt.

    var rear;
    var front;

    function onRearClick(e)
    {
       var e = e || window.event;
       var radiobutton = e.target || e.srcElement;
       rear = radiobutton.value;
    }

    function onFrontClick(e)
    {
       var e = e || window.event;
       var radiobutton = e.target || e.srcElement;
       front = radiobutton.value;
    }

    Die Unterscheidung 8e.target || e.srcElement) ist notwendig wegen IE.

    Gruß!

    1. function onRearClick(e)
      {
         var e = e || window.event;
         var radiobutton = e.target || e.srcElement;
         rear = radiobutton.value;
      }

      Ja, super Idee das. Damit habe ich immer das aktuell gewählte Event der Radiobuttons und das im anderen Bereich gewählte Value speicher ich in einer globalen JS Variablen ab, ok.

      Dieses Problem damit gelöst, aber ich merke, es ist offensichtlich nicht möglich mit einem Index auf das gerade ausgewählte Radio-Element zuzgreifen, wie z.B. bei einer >input type="select" ...> - Anweisung mittels SelectedIndex.
      Schon irgendwie komisch...

      Gruß
      Doc

      1. Hi,

        Dieses Problem damit gelöst, aber ich merke, es ist offensichtlich nicht möglich mit einem Index auf das gerade ausgewählte Radio-Element zuzgreifen, wie z.B. bei einer >input type="select" ...> - Anweisung mittels SelectedIndex.
        Schon irgendwie komisch...

        Ja, meines Wissens ist das auch nicht möglich. Das liegt wohl daran, dass eine Radiobutton Gruppe kein eigenes Steuerelement in HTML ist, sondern aus mehreren "primitiven" Elementen, nämlich meheren Inputs besteht.

        Also man bräuchte ja ein Objekt/Element, welches eine Eigenschaft "selectedIndex" zur Verfügung stellt. Aber dieses Element gibt es nicht.

        Gruß!

      2. Mahlzeit DocMcSky,

        Dieses Problem damit gelöst, aber ich merke, es ist offensichtlich nicht möglich mit einem Index auf das gerade ausgewählte Radio-Element zuzgreifen, wie z.B. bei einer >input type="select" ...> - Anweisung mittels SelectedIndex.

        Es ist doch aber ohne Weiteres möglich, alle zu einer Radiobutton-Gruppe gehörenden Radiobuttons zu selektieren (schließlich haben sie alle <http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_name@title=den gleichen Namen>) und dann http://de.selfhtml.org/javascript/objekte/array.htm#length@title=darüber <http://de.selfhtml.org/javascript/sprache/schleifen.htm#for@title=zu iterieren>, um festzustellen, welcher von denen http://de.selfhtml.org/javascript/objekte/elements.htm#checked@title=angekreuzt ist - dessen http://de.selfhtml.org/javascript/objekte/elements.htm#value@title=Wert suchst Du doch.

        Schon irgendwie komisch...

        In keinster Weise - schließlich sind Radiobuttons vollkommen selbständige Elemente, deren einziges gemeinsames und einigendes Kriterium der gleiche Name ist ... ein übergeordnetes Objekt (das z.B. den ausgewählten Wert enthält) gibt es aber nicht. Kann man natürlich problemlos dazubasteln.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    2. var rear;
      var front;

      function onRearClick(e)
      {
         var e = e || window.event;
         var radiobutton = e.target || e.srcElement;
         rear = radiobutton.value;
      }

      Hallo nochmal,

      ich hoffe das liest jetzt noch jemand. Ich habe die Funktion bei mir eingebaut um einen gerade geklickten Radiobutton abzufragen, passt auch alles prima, da ich bevorzugt den IE benutze.

      Jetzt hatte ich es mal im Firefox getestet, da passiert gar nichts. Ich denke auch, ich habe da noch einen Fehler, was soll ich da beim Radiobutton als "e" übergeben? Irgendwie blicke ich da mit der event-Abfrage doch nicht ganz durch, beim IE klappts so ;-)
      Vielleicht liegts ja im Firefox an der fehlenden Übergabe?
      Also:
      <input type="radio" name="newrear" value="123" onClick="onRearClick(???)">

      Ich habe mir mal versucht e.target bzw. e.srcElement per alert ausgeben zu lassen, beim IE meldet er für e.target undefined (ok, ich denke das ist das Element beim Firefox) und für srcElement ein Objekt, also da sind Daten vorhanden.
      Im Firefox gibt er nicht einmal eine alert Meldung aus und in der Fehlerkonsole meldet er dann logischerweie "e has no properties", naja, wohl klar, also was genau muss ich übergeben als "e"?

      Danke, Gruß
      Doc

      1. Mahlzeit DocMcSky,

        Vielleicht liegts ja im Firefox an der fehlenden Übergabe?

        Könnte sein ...

        Also:
        <input type="radio" name="newrear" value="123" onClick="onRearClick(???)">

        onclick="onReadClick(event);"

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Mahlzeit DocMcSky,

          Vielleicht liegts ja im Firefox an der fehlenden Übergabe?

          Könnte sein ...

          Also:
          <input type="radio" name="newrear" value="123" onClick="onRearClick(???)">

          onclick="onReadClick(event);"

          Hapüh,

          vielen lieben Dank. Ich hatte vorgestern das "e" bei der Übergabe erst gar nicht gesehen und im IE gings ja auch so, weil eben in in windows.event gespeichert nehme ich an.

          Danke, echt Danke, jetzt gehts auch im Firefox. :-)))

          Gruß
          Doc