クリックすると DOMWindow open イベントをトリガーする一連の DIV 要素があります。問題ありません。
次に、キーボードのアクセシビリティを追加する必要がありました。DOH!!
ユーザーが 1 つの DIV から次の DIV にタブ移動できるように、tabindex 属性を DIV に追加し、Enter キーを処理するためのキープレス ハンドラーを追加しました。問題ありません。
私が経験している問題は、ユーザーが Enter キーを押して DOMWindow を開いたときに、フォーカスを div に戻そうとしていることです (そのため、一連の次の DIV にタブ移動し続けることができます)。
DOMWindow の "functionCallOnClose" 設定に関数を追加しようとしましたが、何もしないようです。
コードスニペットを次に示します。これは、「timeEntry」というクラス名を持つすべての DIV にクリックおよびキープレス イベントをバインドします。
$(".timeEntry").live("click keypress", function () {
// bunch of code here to set up the DOMWindow...
$.openDOMWindow({
// bunch of settings here...
functionCallOnClose: function () {
// this doesn't work
// 'DivId' is the object (DIV) that was clicked on
$(DivId).focus();
}
});
});
クリックまたはキープレスイベントが発生して処理された後、フォーカスを元の DIV に戻せないように見える理由を誰かが知っていますか?
私はこれがかなりあいまいな質問であることを認識しているので、これを読んでいる誰かが JQuery、DOMWindow を使用し、クリックおよびキープレス イベントを処理している (または少なくともその方法を知っている) ことを期待して、そこに投げ出しています。
:o)
編集:さらにデバッグを行った後、jQuery が DIV タグから tabIndex 属性を取得する際に問題があるようです。ページのソースを表示すると、次の属性が表示されます。
<div id="someDiv" class="someClass" tabindex="1"> ... </div>
ただし、jQuery を使用して属性を取得しようとすると、そこに表示されません。
このコードは「未定義」を返します
var tabindex = $("#someDiv").attr("tabindex");
ただし、jQuery を使用して属性を設定すると、方向転換して取得できます。
// set the tabindex
$("#someDiv").attr("tabindex", "1");
// now this returns "1"
var tabindex = $("#someDiv").attr("tabindex");
HTMLで設定されたときにjQueryがtabindex属性を返さない理由が誰にもわかりますが、コードを使用して動的に設定された後は返されますか?
これが理にかなっていることを願っています...