2

多数のボタンをホストする jQuery UI ダイアログがあります。

これらのボタンでキーボード コントロール (タブ ナビゲーション) を使用したいので、ダイアログのオープン イベント ハンドラーで、最初のボタンをフォーカス済みに設定しました。

これが機能していることを視覚的に確認でき、document.activeElement を使用して検証することもできますが、フォーカスが奪われ、別の何かがフォーカスされます。

この時点では、それ以上のフックがないため、何がフォーカスされているかをどのように確認すればよいかわかりません。

他の誰かが同様の問題に気づきましたか?

興味がある場合は、私のコードは次のとおりです (以下で説明するようにフォーカスを追加するように修正されています)。

in doc.ready - jQuery Buttons も追加したことに注意してください - しかし、それらはキーボードイベントにまったく応答していないようですが、それは別の質問です。

        $("#dialogSearchType").dialog
        (
            {
                bgiframe: true,
                height: 180,
                width: 350,
                modal: true,
                autoOpen: false,
                show: 'drop',
                hide: 'fold',
                buttons: { "Street": function() { HandleSearchStreetClick(); $(this).dialog("close"); },
                    "Property": function() { HandleSearchPropertyClick(); $(this).dialog("close"); }
                },
                focus: function(event, ui) { $("#btnSearchTypeProperty").focus(); }
            }
        );


    <div id="dialogSearchType" class="searchDialog" style="width: 280px; display: none" title="Search For..." onkeyup="HandleSearchTypeDialogKeyUp(event)">
        <span>What would you like to search for?</span>
        <br />                
                     <input type="button" tabindex="1" id="btnSearchTypeStreet" class="button" value="Street" onclick="HandleDialogSearchStreetClick()" />
        <input type="button" tabindex="2" id="btnSearchTypeProperty" class="button" value="Property" />           

    </div>

ご覧のとおり、途中でイベント ハンドラーを追加しようとしましたが、何も起こりません!

4

3 に答える 3

1

open イベント ハンドラーの代わりにfocus イベント ハンドラーを使用してみて、それが役立つかどうかを確認してください。ダイアログがモーダルでない限り、ダイアログが開いたときだけでなく、ダイアログがフォーカスを得るたびにデフォルトのボタンにフォーカスを当てたいと思うので、おそらくもっと正しいと思います。それでもうまくいかない場合は、質問にコードを追加することをお勧めします。

于 2009-05-22T10:49:44.560 に答える
1

わかりました、何が問題だったのかわかりました。

ダイアログはモーダルに設定されています。

jQuery はドキュメント レベルでキーボード イベントをインターセプトし、それらをキャンセルします。

私はそれが悪いと思うので、このイベント ハンドラーを破棄して独自のイベント ハンドラーを追加する回避策を試みています。

PS誰かが頭の上からこれを行う方法を知っているなら、私に知らせてください!

于 2009-05-22T11:51:35.200 に答える
0

ここで、私たちのために働いた興味深い解決策を見つけることができます

jQuery UI フォーカス盗用

于 2014-01-23T09:06:38.293 に答える