テキストボックスのTABキーをキャプチャする
テキストボックス内で Tab キーを使って、スペース4つ分をタブで移動できるようにしたいのです。今のままでは、Tabキーでカーソルが次の入力にジャンプしてしまいます。
UIにバブルアップされる前に、テキストボックスのTabキーをキャプチャするJavaScriptはありますか?
ブラウザ(FireFoxなど)によっては許可されない場合もあるかと思いますが、どうでしょうか?また、カスタムキーコンボとして、 Shift+Tab や、 Ctrl+Q などではどうですか?
95
6
keydown
/keyup
イベントをキャプチャしても、これらはタブキーが起動する唯一のイベントですが、デフォルトのアクション(タブ順序で次の項目に移動)が発生しないようにする方法が必要です。Firefoxでは、イベントハンドラーに渡されたイベントオブジェクトで「preventDefault()」メソッドを呼び出すことができます。 IEでは、イベントハンドルからfalseを返す必要があります。 JQueryライブラリは、IEおよびFFで機能するイベントオブジェクトに「preventDefault」メソッドを提供します。
フォームアイテム間のタブが壊れるくらいなら、タブのインデントが機能しない方がましです。
Markdownボックスにコードを入れるためにインデントしたい場合は、 Ctrl+K (Macでは⌘K)を使用します。
実際に動作を停止させるという点では、(スタックオーバーフローが使用している)jQueryは、イベントコールバックからfalseを返すと、イベントのバブリングを停止させることができます。これは、複数のブラウザで作業する際に便利です。
前の答えでもいいのですが、私は動作と体裁を混同すること(HTMLにJavaScriptを入れること)には断固反対なので、イベント処理のロジックはJavaScriptファイルに入れることを好んでいます。さらに、すべてのブラウザが同じようにイベント(またはe)を実装しているわけではありません。ロジックを実行する前に確認することをお勧めします。
キーのデフォルトの動作を変更することはお勧めしません。 私はできるだけマウスに触れないで作業するので、もしタブキーがフォームの次のフィールドに移動しないようにされたら、非常に困るでしょう。
しかし、ショートカットキーは、特に大きなコードブロックやネストの場合に便利かもしれません。 Shift-TABは、通常、フォームの前のフィールドに移動するので、悪いオプションです。 WMDエディタにコードTABを挿入する新しいボタンとショートカットキーがあれば、可能ではないでしょうか?
ScottKoonによる最良の回答に問題があります。
ここです。
する必要があります。
このため、IEでは機能しませんでした。 ScottKoonがコードを更新することを期待しています。
MacのChromeでは、alt-tabがタブ文字を
< textarea>
フィールドに挿入します。ここに1つあります。 . ウィー。!