0

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>
4

1 に答える 1

1

入力要素は空のタグで、コンテンツは含まれていません。それが理由です

<input type="checkbox" id="TheCheckbox" onchange="theCheckboxChanged()">Check Here</input>

動作しません。

ラベルを使用する必要があります

<input type="checkbox" id="TheCheckbox" onchange="theCheckboxChanged()"/><label for="TheCheckbox">Check Here</label>

quirks モードの問題onchange はクリック イベントでトリガーされません。onclick に変更すると、魔法のように機能し始めます。

コードは、タイムアウトなしで要素にフォーカスして正常に動作しています。

于 2012-10-12T15:55:50.120 に答える