2

時間の入力と編集に特化したテキスト入力フィールドを構築しています。機能の一部では、時間のさまざまな構成要素 (時間、分、秒) に焦点を当てるさまざまな方法が必要です。これは、テキストの選択によって示されます。マウスで直接選択が可能で、これはうまく機能しています。もう 1 つの機能は、キーボード ナビゲーションです。

この機能のほとんどは、keyPress イベントを処理し、デフォルトの動作を抑制し、代わりに特別なアクションを代用できるという事実に依存しています。

Firefoxでは、これがうまく機能しています。ユーザーは、左/右矢印キーまたはタブ/シフトタブを使用して時間の一部を移動できます (最後に到達すると、次のタブ キーはフィールドを離れ、次の要素に通常どおりフォーカスします)。

Internet Explorer 7 (他の可能性もありますか?) では、矢印キーとタブは keypress ハンドラーによってさえ受け取られません。矢印キーを押すと、テキストの選択が失われ、カーソルが 1 つ移動します。複数のフィールドを提供する効果がなくなり、コントロールが壊れているように感じます。タブもハンドラーをスキップするようで、すぐに次のフォーカス可能な要素に切り替えます。

これらのキーを傍受するためのトリックはありますか?

4

1 に答える 1

8

非文字キーには onkeydown を使用する必要があります。IE の onkeypress は、文字列を返すキーのみを処理します。

MSDNのドキュメントを具体的に引用するには:

Microsoft Internet Explorer 4.0 では、onkeypress イベントが発生し、次のキーでキャンセルできます。

  • 文字: A - Z (大文字と小文字)
  • 数字: 0 - 9
  • 記号: ! @ # $ % ^ & * ( ) _ - + = < [ ] { } , . / ? \ | ' ` " ~
  • システム: ESC、スペースバー、ENTER
于 2009-06-25T13:33:22.790 に答える