0

Jquery モバイルを使用している場合、キーボードでの選択からオプションを選択すると、DOM の次の入力にタブ移動できません。jquery モバイル ビットを取り出すと、期待どおりに動作します。

私は次のhtmlを持っています:

<body>
<input type='text' id='starter' /><br />
<select id='sel'>
    <option value=''></option>
    <option value='1'>One</option>
    <option value='2'>Two</option>
</select><br />
<input type='text' id='ender' /><br />
</body>

以下のjqueryおよびjquery mobileを使用して、フィドラーでこれを設定しました。

http://jsfiddle.net/58jkj1wa/ - 生の jquery は期待どおりに動作します。

http://jsfiddle.net/a5reojmo/4/ - jquery モバイルの壊れた選択。

問題を再現するには、次の手順を実行します。

  • カーソルは最初の入力から始まります
  • 「タブ」を押して選択に移動します
  • 下矢印を押してオプションを有効にします
  • 下矢印を押して最初のオプションを選択します
  • Return キーを押して変更を受け入れます (非モバイル - フォーカスが正しく選択されました)。
  • タブを押す

モバイル以外のバージョンでは、カーソルは期待どおり 2 番目の入力に表示されるようになりました。モバイル版では、どこか別の場所にある...そして、どこかはわからない。フォーカスが最初の入力に再び移動するためのタブがたくさんあります...次に、入力を介して、使用した選択の後に必要なフィールドに移動します。

個人的にはこれはバグだと思うので、準備ができていると感じた最も干渉するのは、 on change トリガーを試して、次のように選択にフォーカスを戻そうとすることでした:

$("#sel").on("change", function (e) {
    $("#sel").focus();
});

しかし、これはうまくいきません。他の場所でフォーカス呼び出しを行うと、期待どおりに機能し、値を変更しなければ正しく強調表示され、タブがオフになります。しかし、値を変更するとすぐに、フォーカスは別の場所になります。

ただし、次の項目にフォーカスを設定できます。

$("#sel").on("change", function (e) {
    $("#ender").focus();
});

しかし、これは、私が行っている入力の動的な非表示の一部を行うことができず、フォーム内のフロー処理をプログラムでミラーリングする必要があることを意味するため、これを行いたくありません。

JQM が追加するラッパーの一部を更新しようとしましたが、別の入力にフォーカスを設定してからもう一度戻し、オプションで selectmenu の更新を試みましたが、モバイルはまだ次の入力にタブアウトできません。また、さまざまな blur() および focus() 呼び出しを試しましたが、すべて役に立ちませんでした。

この回答がキーダウンハンドラーを追加することで同様のことをしているのを見ましたが、値の変更後にフォーカスがどこにあるのかわからないため、キーダウンハンドラーを追加する場所がわかりません...さらに、これはJQuery Mobileのように聞こえますバグじゃないですか??

JQuery Mobile で選択を変更した後、タブとフォーカス ハイライトを正しく機能させる方法を知っていますか?

これは報告すべきバグですか?

4

0 に答える 0