setTimeout 回避策を使用して、既知の「JavaScript focus() が IE で機能しない」問題を修正しようとしています。ただし、チェックボックスの onchange イベント ハンドラによって呼び出される関数内から呼び出されている場合は機能しません。
言い換えると:
<input type="checkbox" id="TheCheckbox"
onchange="theCheckboxChanged()" />Check Here
function theCheckboxChanged()
{
setTimeout(function () { document.getElementById("anotherElement").focus(); }
, 100);
}
はい、呼び出し時に「anotherElement」が存在します。実際、Firefox で記述されたとおりに動作します。
チェックボックスが次のようにフォーマットされている場合も機能しません。
<input type="checkbox" id="TheCheckbox"
onchange="theCheckboxChanged()">Check Here</input>