Onay kutuları ve radyo düğmeleri için salt okunur bir duruma ulaşmak için javascript-ağır bir yol buldum. Firefox, Opera, Safari, Google Chrome'un geçerli sürümlerinin yanı sıra IE'nin geçerli ve önceki sürümlerine (IE7'ye kadar) karşı test edilmiştir.
Neden sorduğunuz engelli mülkü kullanmıyorsunuz? Sayfayı yazdırırken, devre dışı bırakılan giriş öğeleri gri renkte çıkıyor. Bunun uygulandığı müşteri, tüm öğelerin aynı renkte görünmesini istedi.
Bir şirket için çalışırken bunu geliştirdiğim için kaynak kodunu buraya göndermeme izin verilip verilmediğinden emin değilim, ancak kavramları kesinlikle paylaşabilirim.
Onmousedown olaylarında, tıklama eylemi değişmeden önce seçim durumunu okuyabilirsiniz. Böylece bu bilgileri saklar ve ardından bu durumları bir onclick olayıyla geri yüklersiniz.
<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>
Bunun javascript kısmı şu şekilde çalışır (yine sadece kavramlar):
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;
}
Artık giriş öğelerinin onclick ve onmouseown özelliklerini değiştirerek radyo düğmelerini / onay kutularını etkinleştirebilir / devre dışı bırakabilirsiniz.