私はHTMLテーブルを持っており、各行にはその行を選択または選択解除するためのチェックボックスがあります。チェックボックスの値が変わるたびに、行にハイライトを追加または削除する必要があります。また、少なくとも1つの行が選択されている場合はページの送信ボタンが有効になっていることを確認してください。IEの問題:キーボードとチェックボックスのやりとり
チェックボックスのイベントハンドラは、次の関数によって定義されます。
checkbox.onchange = getCheckboxCallback();
checkbox.onclick = getCheckboxCallback(); // alleged IE fix
私はWindows XPで働いている:他の場所で同じモジュールで
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;
};
}
、チェックボックスは、イベントハンドラを与えていますFirefox 3とOpera 9の両方でうまく動作します。しかし、IE 7はキーボードのやりとりをうまく処理しません(マウスのやりとりはうまく動作します)。
問題は、チェックボックスにフォーカスがあってスペースバーにヒットした場合、チェックボックスがチェックされず、代わりにハーフチェック(マウスの直後に表示されるのと同じ影付きの外観) 。私は実際にボックスをチェックするためにスペースバーをもう一度押す必要があります。同様に、チェックを外すには2つのキーを押す必要があります。奇妙なことに、私がスペースバーを数分間押せば、1回のプレスが期待通りに機能します。
誰でもここで何が起こっているのか説明できますか?この動作を引き起こしているJavaScriptコードで何か間違っていることはありますか?これをどうすれば解決できますか?
しかし、どのようにスペースキーを押すには、チェックボックスをチェックする原因とされていないという事実のために、そのアカウントのでしょうか? –
私はその動作を説明することはできません。チェックボックスにkeydownイベントを追加し、デバッガを使用して動作を調べたり、keydownイベントを使用してスペースバーのプレス(event.keyCode === 32)をチェックしたりすることができます。 – BarelyFitz