Meise2000: Firefox-Bug?!? Radiobutton mit JavaScript handeln

Hallo zusammen,

ich habe folgende HTML-Page:

  
<html>  
 <head><title>Test</title></head>  
 <script language="JavaScript">  
   function uncheck(id) {  
     document.getElementById(id).removeAttribute("checked");  
   }  
   function check(id) {  
     document.getElementById(id).setAttribute("checked", "checked");  
   }  
 </script>  
<body>  
  <p><a href="#" onclick="uncheck('r1')">Uncheck 1</a> || <a href="#" onclick="check('r1')">Check 1</a></p>  
  <p><a href="#" onclick="uncheck('r2')">Uncheck 2</a> || <a href="#" onclick="check('r2')">Check 2</a></p>  
  <form method="post" action="">  
    <input id="r1" type="radio" name="group" value="v1" checked="checked">V1</input>  
    <input id="r2" type="radio" name="group" value="v2">V2</input>  
  </form>  
</body>  
</html>  

Zunächst funktioniert alles so, wie ich es erwarte. Jeder Klick auf einen der vier a-Anker tut genau das, was er soll.

Sobald ich aber einen Radiobutton direkt mit der Maus anklicke, tut die JavaScript Funktion nichts mehr (zumindest im Firefox). Das kuriose ist, dass ich im FireBug sehen kann, dass das "checked"-Attribute gelöscht (bzw. je nach Klick gesetzt) wird.

Kann es sein, dass der Firefox die Anzeige nicht aktualisiert? Gibt es da vielleicht einen Punkt in der Spec, der dieses Verhalten rechtfertigt?

Vielen Dank für eure Hilfe!

Gruß,
Meise.

  1. Hi,

    Verändere folgendes:

    function uncheck(id) {
         document.getElementById(id).removeAttribute("checked");

    document.getElementById(id).checked = false;

    }
       function check(id) {
         document.getElementById(id).setAttribute("checked", "checked");

    document.getElementById(id).checked = true;

    }

    <p><a href="#" onclick="uncheck('r1')">Uncheck 1</a> || <a href="#" onclick="check('r1')">Check 1</a></p>

    Hier würde ich noch überall ein "return false" ergänzen, damit die Seite nicht hoch Scrollt, wenn man auf den Link klickt:
    <a href="#" onclick="uncheck('r1'); return false;">Uncheck 1</a>

    Sobald ich aber einen Radiobutton direkt mit der Maus anklicke, tut die JavaScript Funktion nichts mehr (zumindest im Firefox). Das kuriose ist, dass ich im FireBug sehen kann, dass das "checked"-Attribute gelöscht (bzw. je nach Klick gesetzt) wird.

    So wie ich das sehe sagt das Checked-Attribut nur, ob der Radio-Button standardmäßig (beim Laden der Seite) ausgewählt sein soll.
    Wenn du aber element.checked änderst ändert sich der aktuelle Zustand.

    mfG,
    steckl

    1. Hallo,

      So wie ich das sehe sagt das Checked-Attribut nur, ob der Radio-Button standardmäßig (beim Laden der Seite) ausgewählt sein soll.
      Wenn du aber element.checked änderst ändert sich der aktuelle Zustand.

      Das war genau der Hinweis, den ich brauchte! Vielen Dank...

      Gruß,
      Meise.

  2. Moin Moin!

    <script language="JavaScript">

      
    Das Attribut type fehlt (sollte "text/javascript" sein), das Attribut language ist veraltet und sollte nicht mehr benutzt werden.  
      
    Was Du zu bauen versuchst, scheint [<label for=...>](http://de.selfhtml.org/html/formulare/strukturieren.htm#label) zu sein. Erfinde das Rad nicht neu. <label for=...> kommt ohne Javascript aus und freut im Zweifel Suchmaschinen.  
      
    Alexander
    
    -- 
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".