2

クリックすると 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属性を返さない理由が誰にもわかりますが、コードを使用して動的に設定された後は返されますか?

これが理にかなっていることを願っています...

4

1 に答える 1

1

問題は興味深いので、検索を行ったところ、これが見つかりました:http://api.jquery.com/attr/#comment-92512642

jquery バージョン 1.4.3 のバグである可能性があります (リンクによると 1.4.2 で動作します)。

于 2011-01-19T09:14:25.270 に答える