hi,
Den deaktivierten Button spreche ich mit einer class an, also class="btn btnDisabled"; diese ist dann im CSS definiert.
Das beeindruckt den Internet Explorer aber wenig - wenn du einem Formularelement die Eigenschaft disabled verpasst, hat er dafür seine eigenen Formatierungsregeln, die er mit höherer Spezifität anwendet, als deine sonstigen Angaben im CSS.
(Wenn(!) der IE den Attribut-Selektor verstehen würde, könnte man damit evtl. etwas machen - tut er aber nicht, und somit scheint dieses Problem nicht lösbar, was diverse im Archiv zu findende Threads belegen.)
Es wäre natürlich vorteilhaft, wenn ich mit dem Button auch keine Funktion auslösen kann.
Das dürfte auch der Fall sein, wenn du ihn wirklich disabled hast.
Nehmen wir an, ich habe einen "Speichern"-Button, der aber noch deaktiviert ist (und zB erst nach Eingabe aller Formfelder aktiviert wird) möchte ich natürlich nicht, dass die Speichern-Funktion trotzdem ausgeführt wird, obwohl der Button eigentlich als "deaktiviert" dargestellt wird.
Wenn du auf das Ausfüllen/Aktivieren anderer Formularfelder "warten" willst, brauchst du sowieso Javascript, um den Button dann beizeiten "freizuschalten".
Dann könntest du aber auch auf das "echte" disable-n verzichten - damit könntest du ihn dann wieder per CSS so formatieren, wie gewünscht.
Das "nicht funktionieren" könntest du dann per Javascript simulieren: du rufst onClick auf dem Button eine Prüffunktion auf, die entscheidet, ob der Button klickbar sein soll ("klickbar" ist er ohne disabled zwar immer, aber ob darauf hin eine Reaktion [Abschicken des Formulars] erfolgt, könntest du beeinflussen).
Dies muss nicht unbedingt per onClick auf dem Button geschehen, auch onSubmit im Formular könnte das erledigen. Im dortigen Beispiel siehst du, wie soetwas funktioniert.
Dass der Button sich _optisch_ als klickbar oder nicht klickbar präsentiert, könntest du bewerkstelligen, in dem du ihm per Javascript eine andere Klasse verpasst (oder seine style-Eigenschaften sonstwie abänderst). Damit dies automatisch passiert, sobald alle erforderlichen Eingaben gemacht wurden, müsste auf den einzelnen Formularfeldern mittels Eventhandlern wie onChange (oder onClick bei Checkboxen/Radiobuttons) eine Überprüfung stattfinden.
gruß,
wahsaga
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }