我有一個HTML表格,每一行都有一個用於選擇或取消選擇其行的複選框。每當複選框更改值時,我需要向該行添加或刪除突出顯示,並確保僅當至少選中一行並禁用其他行時才啓用頁面的提交按鈕。IE問題:鍵盤與複選框交互
複選框事件處理程序是由下面的函數定義:
function getCheckboxCallback() {
return function() {
var parentRow = getParentRow(this);
if (!parentRow) {
return; // No parent row found; abort
}
// Adjust the appearance of the row
setSelected(parentRow, this.checked);
// Count the number of selected table rows, and disable the submit
// button whenever no rows are selected
enforceInvariants();
return true;
};
}
其他地方在同一模塊中,該複選框被賦予的事件處理程序:
checkbox.onchange = getCheckboxCallback();
checkbox.onclick = getCheckboxCallback(); // alleged IE fix
我在Windows XP中工作,並且在Firefox 3和Opera 9中都可以正常工作。但是,IE 7不能很好地處理鍵盤交互(鼠標交互工作正常)。
問題是,如果一個複選框有焦點,我打空格鍵,複選框不會被檢查 - 相反,它會得到一半檢查(它具有相同的陰影外觀,它會立即在mousedown後) 。我必須再次按空格鍵才能真正檢查框。同樣,它需要兩次按鍵來取消選中它。奇怪的是,如果我按住空格鍵一會兒,那麼一臺印刷機按預期工作。
任何人都可以解釋這裏發生了什麼?有什麼我在JavaScript代碼中導致這種行爲做錯了嗎?我怎樣才能解決這個問題?
但如何進行檢查該帳戶的事實,空格鍵印刷機不會導致該複選框? – 2009-05-29 19:17:07