Ich habe mir eine Javascript-schwere Methode ausgedacht, um einen schreibgeschützten Status für Kontrollkästchen und Optionsfelder zu erreichen. Es wird gegen aktuelle Versionen von Firefox, Opera, Safari, Google Chrome sowie gegen aktuelle und frühere Versionen von IE (bis auf IE7) getestet.
Warum nicht einfach die von Ihnen gewünschte Behindertenimmobilie nutzen? Beim Drucken der Seite werden deaktivierte Eingabeelemente in grauer Farbe angezeigt. Der Kunde, für den dies implementiert wurde, wollte, dass alle Elemente dieselbe Farbe haben.
Ich bin mir nicht sicher, ob ich den Quellcode hier posten darf, da ich ihn während meiner Arbeit für ein Unternehmen entwickelt habe, aber ich kann die Konzepte sicherlich teilen.
Bei Onmousedown-Ereignissen können Sie den Auswahlstatus lesen, bevor die Klickaktion ihn ändert. Sie speichern diese Informationen und stellen diese Zustände dann mit einem Onclick-Ereignis wieder her.
<input id="r1" type="radio" name="group1" value="r1" onmousedown="storeSelectedRadiosForThisGroup(this.name);" onclick="setSelectedStateForEachElementOfThisGroup(this.name);" checked="checked">Option 1</input>
<input id="r2" type="radio" name="group1" value="r2" onmousedown="storeSelectedRadiosForThisGroup(this.name);" onclick="setSelectedStateForEachElementOfThisGroup(this.name);">Option 2</input>
<input id="r3" type="radio" name="group1" value="r3" onmousedown="storeSelectedRadiosForThisGroup(this.name);" onclick="setSelectedStateForEachElementOfThisGroup(this.name);">Option 3</input>
<input id="c1" type="checkbox" name="group2" value="c1" onmousedown="storeSelectedRadiosForThisGroup(this.name);" onclick="setSelectedStateForEachElementOfThisGroup(this.name);" checked="checked">Option 1</input>
<input id="c2" type="checkbox" name="group2" value="c2" onmousedown="storeSelectedRadiosForThisGroup(this.name);" onclick="setSelectedStateForEachElementOfThisGroup(this.name);">Option 2</input>
<input id="c3" type="checkbox" name="group2" value="c3" onmousedown="storeSelectedRadiosForThisGroup(this.name);" onclick="setSelectedStateForEachElementOfThisGroup(this.name);" checked="checked">Option 3</input>
Der Javascript-Teil davon würde dann so funktionieren (wieder nur die Konzepte):
var selectionStore = new Object(); // keep the currently selected items' ids in a store
function storeSelectedRadiosForThisGroup(elementName) {
// get all the elements for this group
var radioOrSelectGroup = document.getElementsByName(elementName);
// iterate over the group to find the selected values and store the selected ids in the selectionStore
// ((radioOrSelectGroup[i].checked == true) tells you that)
// remember checkbox groups can have multiple checked items, so you you might need an array for the ids
...
}
function setSelectedStateForEachElementOfThisGroup(elementName) {
// iterate over the group and set the elements checked property to true/false, depending on whether their id is in the selectionStore
...
// make sure you return false here
return false;
}
Sie können jetzt die Optionsfelder / Kontrollkästchen aktivieren / deaktivieren, indem Sie die Eigenschaften onclick und onmousedown der Eingabeelemente ändern.