norbert: radiobuttons auf disabled setzen

Hai,

ich habe zwei Gruppen von Radiobuttons.

1. Gruppe:
<input type="radio" name="gr1" value="ja" onchange ="tuwas()"> ja
<input type="radio" name="gr1" value="nein"> nein

2. Gruppe:
<input type="radio" name="gr2" value="1"> 1
<input type="radio" name="gr2" value="2"> 2
<input type="radio" name="gr2" value="3"> 3
<input type="radio" name="gr2" value="4"> 4

wenn nun der "nein" button von Gruppe-1 angeklickt wird, muss in der Gruppe-2, der mit dcem Value 3 auf disabled gesetzt werden.

<script>
  function tuwas(){
    var a = document.forms['meineForm'].gr1.value;
    if(a == "ja"){
        <und nun?>
    }
  }
<script>

Danke

  1. <und nun?>

    Suchmaschine deiner Wahl: "JavaScript disabled", einer der ersten Treffer:
    http://de.selfhtml.org/javascript/objekte/elements.htm#disabled

  2. Hi there,

    <und nun?>

    ...element.setAttribut('disabled',true) wäre ein Ansatzpunkt...

    1. ...element.setAttribut('disabled',true) wäre ein Ansatzpunkt...

      Du meinst sicher setAttribute() und zudem sollte der Wert von disabled "disabled" sein.

      1. Hi there,

        Du meinst sicher setAttribute() und zudem sollte der Wert von disabled "disabled" sein.

        In ersterem Punkte gebe ich Dir uneingeschränkt recht, was den zweiten betrifft würde mich das fordernde "sollen" interessieren. Wenn es die Browser verstehen (was bei mir alle tun), wer hätte dann wozu das Recht, irgendetwas sollendes zu fordern?

        1. Du meinst sicher setAttribute() und zudem sollte der Wert von disabled "disabled" sein.

          In ersterem Punkte gebe ich Dir uneingeschränkt recht, was den zweiten betrifft würde mich das fordernde "sollen" interessieren. Wenn es die Browser verstehen (was bei mir alle tun), wer hätte dann wozu das Recht, irgendetwas sollendes zu fordern?

          In XHTML-Dialekten ist es idR. erforderlich, dass der Wert disabled im Attribut disabled steht. Auch wenn zu diesem Zeitpunkt das Dokument schon in ein DOM überführt wurde und um Browser herumliegt und das Attribut dann noch mit JavaScript hinzugefügt wird und auch funktioniert kann man prinzipiell nicht davon ausgehen, dass das auch funktioniert wenn da dann disabled="true" oder disabled="1" steht (jenachdem wie das nun gecastet wird) - will man nun das DOM selbst wieder in XHTML (oder XML) zurücküberführen, bekommt man unerwartetes Markup.

          Zwecks Ordnung ist es also nicht verkehrt, den erwarteten Wert zu verwenden.

          1. Hi there,

            In XHTML-Dialekten ist es idR. erforderlich, dass der Wert disabled im Attribut disabled steht.

            IdR. ist schon wieder so eine leise Einschränkung, das Pendant zum gerne gesehenen "Sollen", nicht zum zwingenden "Müssen".

            Zwecks Ordnung ist es also nicht verkehrt, den erwarteten Wert zu verwenden.

            Einen Einwand hab' ich noch: "true" schreibt man viel schneller als "disabled" und weniger Platz braucht es auch...

            1. Hi,

              Einen Einwand hab' ich noch: "true" schreibt man viel schneller als "disabled" und weniger Platz braucht es auch...

              Und element.disabled = true schreibt sich noch schneller als setAttribute.

              Und da gibt's dann auch gar keine Verwirrung mehr, was als Wert zu setzen ist - das ist nämlich schon seit DOM Level 1 als Attribut vom Typ boolean definiert, http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-html.html#ID-6043025

              Die gleiche Spezifikation sagt zwar auch, dass das Ansprechen von Attributen als Properties des Elements deprecated wäre, weil die nicht für alle potentiellen Attributnamen in XML und künftigen HTML-Versionen garantiert werden könne - aber das kann man in der heutigen Browserlandschaft getrost ignorieren; mir ist kein Browser bekannt, der das nicht unterstützt.
              setAttribute hingegen macht in älteren IE oftmals an diversen Stellen Probleme.

              MfG ChrisB

              --
              RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
              1. Hallo,

                "true" schreibt man viel schneller als "disabled" und weniger Platz braucht es auch...

                Und element.disabled = true schreibt sich noch schneller als setAttribute.

                LOL - Daran dachte ich auch als erstes, hab's aber nicht zu posten gewagt.
                Wenn es noch etwas umständlicheres als setAttribute gäbe, würden die meisten es bestimmt gleich verwenden und empfehlen. ;)

                Gruß, Don P

                1. LOL - Daran dachte ich auch als erstes, hab's aber nicht zu posten gewagt.
                  Wenn es noch etwas umständlicheres als setAttribute gäbe, würden die meisten es bestimmt gleich verwenden und empfehlen. ;)

                  Ich hab' sofort daran gedacht und es gepostet :p
                  https://forum.selfhtml.org/?t=204198&m=1382464

                2. Hallo,

                  "true" schreibt man viel schneller als "disabled" und weniger Platz braucht es auch...

                  Und element.disabled = true schreibt sich noch schneller als setAttribute.

                  LOL - Daran dachte ich auch als erstes, hab's aber nicht zu posten gewagt.
                  Wenn es noch etwas umständlicheres als setAttribute gäbe, würden die meisten es bestimmt gleich verwenden und empfehlen. ;)

                  viel schöner. Das Ergebnis von:

                  element.setAttribute("disabled", true);

                  entspricht der Erwartung, das Ergebnis von

                  element.setAttribute("disabled", false);

                  kann hingegen überraschend sein. Es fällt (in den von mir getesteten Browsern - nicht nur IE) anders aus als das Ergebnis von

                  element.disabled = false;

                  Cheatah hat den Unterschied im von mir verlinkten Archivthread begründet.

                  Freundliche Grüße

                  Vinzenz

                  1. Hi there,

                    entspricht der Erwartung, das Ergebnis von

                    element.setAttribute("disabled", false);

                    kann hingegen überraschend sein.

                    ja so ist das eben. Wenn Programmierung etwas mit Logik zu tun hätte, dann gäbe es noch viel weniger weibliche Programmier...

            2. Hallo,

              Einen Einwand hab' ich noch: "true" schreibt man viel schneller als "disabled" und weniger Platz braucht es auch...

              ich auch: auf setAttribute() zu verzichten ist noch kürzer ...
              und versuche bitte mittels setAttribute() einen deaktivierten RadioButton wieder zu aktivieren, siehe dieser Archivthread.

              Freundliche Grüße

              Vinzenz

              1. Hi there,

                ich auch: auf setAttribute() zu verzichten ist noch kürzer ...

                ja eh. Gar keine Radiobuttons zu setzen ist an Kürze schon fast nicht mehr zu übertreffen.

                und versuche bitte mittels setAttribute() einen deaktivierten RadioButton wieder zu aktivieren, siehe dieser Archivthread.

                mach ich nicht, ich remove das Attribute...

                1. Hallo,

                  und versuche bitte mittels setAttribute() einen deaktivierten RadioButton wieder zu aktivieren, siehe dieser Archivthread.

                  mach ich nicht, ich remove das Attribute...

                  Nö, dafür hab' ich ein Objekt mit Helferfunktionsönchen:

                  Common: {  
                      /* ... */  
                      disable: function(bool){return (this.disabled=!!bool);},  
                      /* ... */  
                  }  
                  
                  

                  Bedienelemente werden u.a. um die Methode namens disable erweitert, und gut.

                  Aufruf dann mit elt.disable(true) oder elt.disable(false) oder elt.disable(wasImmer). Zur bequemen Weiterverarbeitung z.B. in einem Ausdruck wird der gesetzte boolesche Wert auch zurückgegeben.

                  Wenn man das mit set- und removeAttribute macht, muss man zusätzlich eine Fallunterscheidung einbauen. Wäre das wirklich exakter bzw. standardkonformer? Wie müsste meine Funktion dann browserübergreifend aussehen aussehen, damit man nicht in <http://de.selfhtml.org/javascript/objekte/node.htm#set_attribute@title=gewisse Fallen> tappt? Ohne setAttribute vielleicht so:

                  function disable(bool) {  
                    
                      if(bool) {return !!(this.disabled='disabled');}  
                      this.removeAttribute('disabled'); return false;  
                  }  
                  
                  

                  Im verlinkten Artikel zu setAttribute heißt es u.a. "der MSIE verlangt die Schreibweise des Attributnamens, die im HTML-spezifischen DOM für den Direktzugriff definiert wurde [...] Es kommt also auf die korrekte Groß- und Kleinschreibung an. [...] Allerdings akzeptieren andere Browser diese speziellen Schreibweisen nicht."

                  Stimmt das inzwischen nicht mehr?

                  Gruß, Don P

                  1. Hi there,

                    Im verlinkten Artikel zu setAttribute heißt es u.a. "der MSIE verlangt die Schreibweise des Attributnamens, die im HTML-spezifischen DOM für den Direktzugriff definiert wurde [...] Es kommt also auf die korrekte Groß- und Kleinschreibung an. [...] Allerdings akzeptieren andere Browser diese speziellen Schreibweisen nicht."

                    Stimmt das inzwischen nicht mehr?

                    Keine Ahnung, ich schreib Webanwendungen, der IE geht mir da am *rsch vorbei. Meine Kunden verwenden die Browser, die ich ihnen empfehle; bei Webseiten ist das natürlich etwas anderes, da muss man den IE berücksichtigen.

                    Prinzipiell muss man aber sagen, daß die hier erwähnten Einwände bzgl. der Alternativen alle richtig sind. Es ist in der Praxis halt so, man verwendet etwas, das funktioniert, und das wars dann. Optimal ist das nicht, aber deshalb liest man in Foren ja auch mit, daß man dann und wann wieder gedankliche Anstösse bekommt...