嗨,document.activeElement在Chrome上無法按預期工作,有哪些選擇?
我想檢查/取消選中所有相同類的複選框,並在選中/取消選中複選框時禁用\啓用相關文本字段。
我設法使用document.activeElement
和document.getElementsByClassName
來編寫代碼,它只會在Chrome上不起作用。這是一個reported bug in Chrome,它返回body而不是實際的activeElement,除非activeElement是一個文本字段。
有沒有一種解決方法,我可以使用,直到錯誤被修復?
JS:
function changeAll(variable) {
var current = document.activeElement;
var checkboxes = variable + "_g";
var text = variable + "_v";
var i;
if (current.checked === true) {
for (i = 0; i < document.getElementsByClassName(checkboxes).length; i++) {
document.getElementsByClassName(checkboxes)[i].checked = true;
}
for (i = 0; i < document.getElementsByClassName(text).length; i++) {
document.getElementsByClassName(text)[i].disabled = false;
}
} else {
for (i = 0; i < document.getElementsByClassName(checkboxes).length; i++) {
document.getElementsByClassName(checkboxes)[i].checked = false;
}
for (i = 0; i < document.getElementsByClassName(text).length; i++) {
document.getElementsByClassName(text)[i].disabled = true;
}
}
}
HTML:
<input type="checkbox" class="y_g" onClick="changeAll('y')">
<input type="text" class="y_v" disabled>
<input type="checkbox" class="y_g" onClick="changeAll('y')">
<input type="text" class="y_v" disabled>
<br>
<input type="checkbox" class="x_g" onClick="changeAll('x')">
<input type="text" class="x_v" disabled>
<input type="checkbox" class="x_g" onClick="changeAll('x')">
<input type="text" class="x_v" disabled>
請勿使用內聯事件處理程序屬性!那麼你根本不需要'activeElement'。 – Bergi 2013-05-03 12:16:47