ฉันได้วิธีการจาวาสคริปต์อย่างหนักเพื่อให้ได้สถานะอ่านอย่างเดียวสำหรับกล่องกาเครื่องหมายและปุ่มตัวเลือก มีการทดสอบกับ Firefox เวอร์ชันปัจจุบัน Opera, Safari, Google Chrome รวมถึง IE เวอร์ชันปัจจุบันและก่อนหน้า (ลงไปที่ IE7)
ทำไมไม่ใช้คุณสมบัติที่ปิดใช้งานที่คุณถาม เมื่อพิมพ์หน้าองค์ประกอบการป้อนข้อมูลที่ปิดใช้งานจะออกมาเป็นสีเทา ลูกค้าที่ใช้สิ่งนี้ต้องการให้องค์ประกอบทั้งหมดออกมาเป็นสีเดียวกัน
ฉันไม่แน่ใจว่าฉันได้รับอนุญาตให้โพสต์ซอร์สโค้ดที่นี่ขณะที่ฉันพัฒนามันในขณะที่ทำงานให้กับ บริษัท แต่ฉันสามารถแบ่งปันแนวคิดได้
ด้วยเหตุการณ์ onmousedown คุณสามารถอ่านสถานะการเลือกก่อนที่การกระทำการคลิกจะเปลี่ยนแปลง ดังนั้นคุณเก็บข้อมูลนี้แล้วคืนค่าสถานะเหล่านี้ด้วยเหตุการณ์ 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>
ส่วนจาวาสคริปต์ของสิ่งนี้จะทำงานได้เช่นนี้ (อีกแนวคิดเท่านั้น):
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;
}
ตอนนี้คุณสามารถเปิด / ปิดใช้งานปุ่มตัวเลือก / ช่องทำเครื่องหมายโดยเปลี่ยนคุณสมบัติ onclick และ onmousedown ขององค์ประกอบการป้อนข้อมูล