Matze: Formularelemente deaktivieren

Hallo!

Ich beschäftige mich gerade mit disabled für Formularelemente und habe folgendes Problem.

Ich möchte voraus schicken, dass ich nicht viel Ahnung von JS habe, aber ich habe versucht, das Beispiel für mich anzupassen.
Als erstes wurde von mir der Radiobutton für "ja" entfernt.
Dann habe ich in der Abfrage if (document.Testform.auto[0].checked == true) das Array "auto[]" durch (nur) "auto" ersetzt. Anschließend wurden alle Radiobutton, durch Checkbox ersetzt.

Weil ich bei der späteren Verarbeitung mit PHP gern ein schönes Array hab, haben meine Checkboxen nicht mehr die Bezeichnungen name="autoart" sondern name="autoart[]" bekommen.

Leider funktioniert das Deaktivieren jetzt nicht mehr.
Ich habe bereits folgendes versucht.

  
document.Testform.autoart[][i].disabled = deaktiviert;  
document.Testform.autoart[0][i].disabled = deaktiviert;  
document.Testform."autoart[]".[i].disabled = deaktiviert;  
document.Testform."autoart[]"+[i].disabled = deaktiviert;  

Die letzten Beiden auch mit ' statt ".

Könnte mir bitte jemand helfen das Beispiel mit den von mir verwendeten Objektnamen "zum laufen zu kriegen"? Oder habe ich einen völlig anderen Denkfehler?

Danke für eure Hilfe!

Matze

  1. Hallo Matze,

    Leider funktioniert das Deaktivieren jetzt nicht mehr.
    Ich habe bereits folgendes versucht.

    document.Testform.autoart[][i].disabled = deaktiviert;
    document.Testform.autoart[0][i].disabled = deaktiviert;
    document.Testform."autoart[]".[i].disabled = deaktiviert;
    document.Testform."autoart[]"+[i].disabled = deaktiviert;

    
    > Die letzten Beiden auch mit ' statt ".  
      
    Du willst sowas wie:  
      
    ~~~javascript
    for (var i = 0; i < document.forms['Testform'].elements['autostart[]'].length; i++) {  
      document.forms['Testform'].elements['autostart[]'][i].disabled = deaktiviert;  
    }
    

    Siehe: http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines.

    Viele Grüße,
    Christian

    1. Hallo Christian!

      Fast!

      document.forms['Testform'].elements['autostart[]'].length; i++)
                                               ^^

      Ist es dadurch auch Windowskompatibel? *SCNR

      Danke und Grüße,

      Matze

      1. Hallo!

        Jetzt habe ich noch ein anderes Problem festgestellt. Und zwar werden Input-Elemente im Firefox nicht eingegraut.

        Leider habe ich gerade keinen anderen Browser zum testen, aber wenns allein im Firefox ist, will ich es beheben.

        Bleibt mir nichts anderes übrig als neben dem Deaktivieren des Elements zusätzlich die Hintergrundfarbe zu ändern? Und wenn ja, ist das "eingegraute" doch sicher eine Browsereinstellung und die Farbe von disabled muss sich nicht automatisch mit meinem gewählten Grau decken oder?

        Danke für eure Hilfe!

        Grüße, Matze

    2. Hallo,

      for (var i = 0; i < document.forms['Testform'].elements['autostart[]'].length; i++) {

      document.forms['Testform'].elements['autostart[]'][i].disabled = deaktiviert;
      }

        
      Und wenn man es übersichtlicher und performant haben will, nimmt man:  
        
      ~~~javascript
      var elements = document.forms.Testform.elements['autostart[]'];  
      for (var i = 0, element; element = element[i]; i++) {  
         element.disabled = deaktiviert;  
      }
      

      Mathias