2013-05-03 57 views
0

嗨,document.activeElement在Chrome上無法按預期工作,有哪些選擇?

我想檢查/取消選中所有相同類的複選框,並在選中/取消選中複選框時禁用\啓用相關文本字段。

我設法使用document.activeElementdocument.getElementsByClassName來編寫代碼,它只會在Chrome上不起作用。這是一個reported bug in Chrome,它返回body而不是實際的activeElement,除非activeElement是一個文本字段。

有沒有一種解決方法,我可以使用,直到錯誤被修復?

My code:

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> 
+0

請勿使用內聯事件處理程序屬性!那麼你根本不需要'activeElement'。 – Bergi 2013-05-03 12:16:47

回答

1

通行證在參考

HTML:

<input type="checkbox" class="y_g" onClick="changeAll(this,'y')"> 

的JavaScript:

function changeAll(current, variable) { 
    //var current = document.activeElement; 

理想情況下你不會是使用內聯事件。

+0

謝謝,完美無缺:) – OmarKH 2013-05-03 12:20:16