15

javascript onfocus() ハンドラーで、次の項目の ID を手動で入力することなく、タブ オーダーの次の項目にフォーカスをトランポリンする良い方法はありますか?

Django/jQuery で HTML 日付ピッカーを作成しました。これは、カレンダーをポップアップするカレンダー アイコンが続く行編集です。カレンダー アイコンのリンクをスキップして、行の編集から次の入力までタブで移動できるようにしたいと考えています。私はそれが一般化されたウィジェットであることを意味するので、次のもののIDをハードコーディングして.focus()を呼び出すことはできません。すべてに tabindex 属性を設定できることはわかっていますが、それは私が望むよりも手動です。また、iirc は、フォーカスを取得することを妨げず、タブ オーダーの最後に配置するだけです。

4

7 に答える 7

27

そのコントロールに tabindex = "-1" を設定すると、ブラウザーはそのコントロールのタブ移動をスキップします。

于 2009-09-28T21:41:04.000 に答える
2

また:

$("#your-calendar-icon").focus(function() {
    $(somethingElse).trigger("focus");
});
于 2009-01-05T02:30:55.970 に答える
2

多分:

$("#your-calendar-icon").focus(function() {
  $(this).trigger("blur");
);
于 2009-01-05T01:33:04.107 に答える
1

このリソースを確認してください:

于 2009-01-05T02:00:54.953 に答える
0

@thetacom が言うように、フォーカスを受け取らない別のタイプの要素を使用できます。tab一部の機能を保持したい場合は、SkipOnTabを試すことができます。

SkipOnTab : 選択したフォーム フィールドを前方タブ オーダーから除外する jQuery プラグイン。

data-skip-on-tab="true"スキップしたい日付ピッカー アイコン (または他の要素/コンテナー) に追加するだけです。クリックして日付ピッカーをアクティブにするか、shift-tabを使用して戻り、Enter キーを使用することができます。

シンプルなデモビジネス ケースのデモをご覧ください。

于 2012-02-12T15:36:27.037 に答える
0

常にカレンダーの後の入力になる場合は、そうではありません:

$('#your-calendar-icon').focus( function() {
  $(this).next('input').focus();
} );

個人的には、それがプラグインになる場合は、次の要素をデフォルトを持つ構成オプションにし、ドキュメントでデフォルトを指定するだけでよいと思います。

于 2009-01-05T02:48:01.537 に答える
0

リンクの代わりに、カレンダー アイコンを div で囲みます。次に、カレンダーのイベントを div に添付します。デフォルトでは、div はタブ ストップにはなりません。

于 2009-01-05T01:44:49.950 に答える