Tôi đã nghĩ ra một cách nặng về javascript để đạt được trạng thái chỉ đọc cho các hộp kiểm và các nút radio. Nó được thử nghiệm với các phiên bản hiện tại của Firefox, Opera, Safari, Google Chrome, cũng như các phiên bản IE hiện tại và trước đây (xuống IE7).
Tại sao không chỉ đơn giản là sử dụng tài sản khuyết tật bạn yêu cầu? Khi in trang, các yếu tố đầu vào bị vô hiệu hóa có màu xám. Khách hàng đã thực hiện điều này muốn tất cả các yếu tố có cùng màu.
Tôi không chắc mình có được phép đăng mã nguồn ở đây không, vì tôi đã phát triển nó khi làm việc cho một công ty, nhưng tôi chắc chắn có thể chia sẻ các khái niệm.
Với các sự kiện onmousedown, bạn có thể đọc trạng thái lựa chọn trước khi hành động nhấp thay đổi nó. Vì vậy, bạn lưu trữ thông tin này và sau đó khôi phục các trạng thái này bằng một sự kiện onclick.
<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>
Phần javascript của phần này sau đó sẽ hoạt động như thế này (chỉ một lần nữa các khái niệm):
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;
}
Bây giờ bạn có thể bật / tắt các nút / hộp kiểm radio bằng cách thay đổi thuộc tính onclick và onmousedown của các thành phần đầu vào.