JavaScript: キーボード イベントをキャプチャしてそれに反応する

PHPz
リリース: 2023-09-04 20:57:02
オリジナル
840 人が閲覧しました

JavaScript: キーボード イベントをキャプチャしてそれに反応する

この記事では、JavaScript でさまざまなキーボード イベントをキャッチして応答する方法について説明します。理解しやすいように実際の例をいくつか示します。

JavaScript はインターネットの中核テクノロジーの 1 つです。これはほとんどの Web サイトで使用されており、プラグインを必要とせずにすべての最新の Web ブラウザーでサポートされています。このシリーズでは、日々の JavaScript 開発に役立つさまざまなヒントやコツについて説明します。

JavaScript 開発者は、キーボード イベントを処理し、それに基づいてアクションを実行する必要がある機能を実装する必要がある場合があります。幸いなことに、JavaScript には、さまざまな種類のキーボード イベントを処理できる組み込みの KeyboardEvent オブジェクトが用意されています。

JavaScript のキーボード イベント

JavaScript では、KeyboardEvent オブジェクトは、キー ダウン、キー ダウン、およびキー アップの 3 つのイベントを提供します。

キーボードの任意のキーを押すと、一連のイベントが次の順序で発生します。

  • キーを押してください
  • ###ボタン### ###ボタン###
  • キーボードのいずれかのキーが押されると、キー イベントがトリガーされます。また、キーが長く押されると、キー押下イベントが繰り返しトリガーされます。
  • キー イベントは主に、印刷可能な文字が押されたときにトリガーされ、キー イベントの後にトリガーされます。実際、キー イベントは、キー イベントによって生成された文字を中継するために使用されます。ほとんどの場合、文字以外のキーではキー イベントが発生しません。一部のブラウザーはこのイベントをサポートしていますが、このイベントは Web 標準から削除されるため、このイベントに依存することはお勧めできません。

主要なイベントは非推奨となり、最新のブラウザーでは段階的に廃止される予定です。

最後に、キーが放されたときにキー イベントが発生します。基本的に、キープレス イベントとキーダウン イベントの組み合わせにより、どのキーが押されたかを示すコードが得られます。

各キーボード イベントは、key

code

という 2 つの重要なプロパティを提供します。 key 属性には押された文字が入力され、code 属性には文字の物理キーの位置が入力されます。たとえば、a 文字キーを押すと、キー プロパティには a が設定され、code プロパティには KeyA# が設定されます。 ## 絶え間ない。ただし、押したキーコードは文字と同じであるとは限りません。ユーザーが Dvorak などの代替キーボード レイアウトを設定している場合、同じキー コードを押すと異なる文字が生成されます。 上記は、JavaScript のキーボード イベントの概要です。次のセクションからは、これらのイベントがどのように機能するかを理解するために、実際の例とともにこれらのイベントについて説明します。 キーダウン

イベント

このセクションでは、

keydown イベントが JavaScript でどのように機能するかを学びます。キーボードのいずれかのキーが押されると、keydown

イベントがトリガーされます。

次の例を簡単に見てみましょう。 リーリー ご覧のとおり、keydown

イベントをリッスンするリスナーを作成しました。いずれかのキーが押されるたびに、リスナーが呼び出され、そのキーの値とコードがコンソールに記録されます。早速実行して、どのように動作するかを確認してください。

ユーザーが

ctrl a または ctrl A

を押したかどうかを検出する方法を示す次の例を見てみましょう。

リーリー まず、ctrlKeyKeyboardEvent

オブジェクトの特別なプロパティであり、

keydown イベントがトリガーされたときに Ctrl が押されたかどうかを示します ## # 鍵。したがって、ctrlKey が true の場合は、Ctrl キーが押されたことを意味します。 次に、押された文字の keyCode 値を確認します。それが 65 または

97

である場合、それは a またはACtrl キーと一緒に押します。 KeyboardEvent オブジェクトの <strong>keyCode</strong> プロパティは、押されたキーの Unicode 文字コードを返します。同様に、KeyboardEvent オブジェクトの shiftKey プロパティを使用することもできます。これにより、keypress イベント中に Shift キーが押されたかどうかがわかります。引き金。 最後に、HTML フォームの入力フィールドに文字のみを許可する方法を示す次の例を見てみましょう。 リーリー 上記の例では、入力テキスト ボックスに keydown イベントを定義しました。したがって、ユーザーがテキストボックスにテキストを入力すると、

allowOnlyAlphabets

関数が呼び出されます。

allowOnlyAlphabets

関数では、イベント オブジェクトの keyCode プロパティの値を、アルファベットの有効な Unicode 範囲に対して検証します。したがって、allowOnlyAlphabets 関数は、ユーザーが有効なアルファベット文字を押した場合は true を返し、それ以外の場合は false を返します。最終的に、ユーザーは文字以外の文字を入力できなくなります。 <h2> <code>keyup 事件

在本节中,我们将了解 keyup 事件如何工作。事实上,它的工作原理与 keydown 事件非常相似,唯一的区别是它是在释放按键时触发,而不是在按下按键时触发。

让我们看一下下面的例子。

document.addEventListener('keydown', (event) => {
  var keyValue = event.key;
  var codeValue = event.code;

  console.log("keydown event, keyValue: " + keyValue);
  console.log("keydown event, codeValue: " + codeValue);

}, false);

document.addEventListener('keyup', (event) => {
  var keyValue = event.key;
  var codeValue = event.code;

  console.log("keyup event, keyValue: " + keyValue);
  console.log("keyup event, codeValue: " + codeValue);
}, false);
ログイン後にコピー

在上面的示例中,当您按下任意键时,将首先触发 keydown 事件,然后触发 keyup 事件。例如,如果您按 a 键,您应该在控制台上看到以下输出。请务必注意事件的触发顺序。

keydown event, keyValue: a
keydown event, codeValue: KeyA
keyup event, keyValue: a
keyup event, codeValue: KeyA
ログイン後にコピー

让我们看一下以下示例,它演示了如何在项目中使用 keyup 事件。

<script>
function getSearchResults(event, element) {
  if (element.value.length > 6) {
    var searchKeyword = element.value;
    // make an AJAX call to fetch search results for "searchKeyword"
  }
}
</script>
<html>
  <body>
    <div>
           <input type="text" onkeyup="return getSearchResults(event, this);">
    </div>
  </body>
</html>
ログイン後にコピー

在上面的示例中,我们在输入文本框上定义了 onkeyup 事件。因此,当用户在文本框中输入任何文本时,它都会调用 getSearchResults 函数。在 getSearchResults 函数中,我们将进行 AJAX 调用来获取搜索关键字的搜索结果。这也称为实时搜索,因为它会立即显示搜索结果,而无需刷新整个页面。

重要的 KeyboardEvent 对象属性

在最后一节中,我将总结 KeyboardEvent 对象的重要属性。事实上,我们已经在到目前为止讨论的示例中看到了一些常用的属性,例如 keycode。我们还将在本节中讨论一些其他重要属性。

  • <strong>key</strong>:返回按下的字符。例如,如果按下a字符,则会返回 a
  • <strong>code</strong>:返回字符的物理键码。例如,如果按下a字符,则会返回 KeyA
  • <strong>keyCode</strong>:返回按下的按键的Unicode字符代码。
  • <strong>ctrlKey</strong>:告诉您触发按键事件时是否按下Ctrl键。
  • <strong>altKey</strong>:告诉您触发按键事件时是否按下了Alt键。
  • <strong>shiftKey</strong>:告诉您触发按键事件时是否按下Shift键。
  • <strong>metaKey</strong>:告诉你触发按键事件时是否按下了Meta键。在大多数情况下,Meta 键是键盘上位于 CtrlAlt 键之间的键。
  • <strong>位置</strong>:返回键盘或设备上按键的位置。

如您所见,keyboardEvent 对象提供了各种属性,允许您检测不同的按键。在大多数情况下,您将使用 keydown 事件来检测按下的按键并执行相应的操作。正如我们之前讨论的,您不应该使用 keypress 事件,因为它迟早会被弃用。

结论

今天,我们讨论了如何在 JavaScript 中使用键盘事件以及几个实际示例。

以上がJavaScript: キーボード イベントをキャプチャしてそれに反応するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート