首頁 >CMS教程 >&#&按 >JavaScript:捕捉鍵盤事件並做出反應

JavaScript:捕捉鍵盤事件並做出反應

PHPz
PHPz原創
2023-09-04 20:57:02867瀏覽

JavaScript:捕捉鍵盤事件並做出反應

在本文中,我們將討論如何在 JavaScript 中擷取並回應不同的鍵盤事件。我將向您展示幾個現實世界的範例,以使其易於理解。

JavaScript 是網路的核心技術之一。大多數網站都使用它,並且所有現代網頁瀏覽器都支援它,而不需要插件。在本系列中,我們將討論不同的提示和技巧,它們將幫助您進行日常 JavaScript 開發。

身為 JavaScript 開發人員,有時您需要實作一些功能,要求您處理鍵盤事件並根據它們執行操作。幸運的是,JavaScript 提供了一個內建的 KeyboardEvent 對象,它允許您處理不同類型的鍵盤事​​件。

JavaScript 中的鍵盤事件

在 JavaScript 中,KeyboardEvent 物件提供了三個事件:按鍵按下、按鍵按下和按鍵彈起。

當您按下鍵盤上的任意按鍵時,一系列事件將按以下順序發生。

  • 按下鍵
  • 按鍵
  • 按鍵

當按下鍵盤上的任意鍵時,會觸發按鍵事件。並且如果長時間按下某個鍵,則會重複觸發按鍵按下事件。

按鍵事件主要在按下任何可列印字元時觸發,並在按鍵事件後觸發。事實上,按鍵事件用於中繼按鍵事件產生的字元。大多數情況下,非字元鍵不會引發按鍵事件。儘管某些瀏覽器支援此事件,但不建議依賴此事件,因為它將從網路標準中刪除。

按鍵事件已被棄用,並將在現代瀏覽器中逐步淘汰。

最後,釋放按鍵時會引發按鍵事件。基本上,按鍵按下和按鍵按下事件的組合為您提供了一個代碼,該代碼指示按下的鍵。

每個鍵盤事件都提供兩個重要的屬性:keycodekey 屬性以按下的字元填充,而 code 屬性以字元的實體鍵位置填充。例如,如果按 a 字元鍵,則 key 屬性將填入 a,並且 code 屬性將填入 KeyA 常數。但是,按下的鍵碼不一定與字元相同!如果使用者設定了備用鍵盤佈局,例如 Dvorak,則按相同的鍵代碼將產生不同的字元。

以上是 JavaScript 中鍵盤事件的簡短概述。從下一節開始,我們將討論這些事件以及現實世界的範例,以了解它們是如何運作的。

keydown 事件

在本節中,我們將了解 keydown 事件如何在 JavaScript 中運作。當按下鍵盤上的任一鍵時,會觸發 keydown 事件。

讓我們快速瀏覽一下以下範例。

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

  console.log("keyValue: " + keyValue);
  console.log("codeValue: " + codeValue);
}, false);

如您所見,我們建立了一個監聽器來監聽 keydown 事件。每當按下任何鍵時,都會呼叫我們的偵聽器,並將該鍵的值和程式碼記錄到控制台。繼續運行它,看看它是如何工作的。

讓我們看一下以下範例,該範例示範如何偵測使用者是否按下了 ctrl actrl A

document.addEventListener('keydown', (event) => {
  if (event.ctrlKey) {
     if (event.keyCode == 65 || event.keyCode == 97) {
         console.log("You have just pressed Ctrl + a/A!");
     }
  }
}, false);

首先, ctrlKeyKeyboardEvent 物件的一個特殊屬性,它告訴您在觸發keydown 事件時是否按下了Ctrl 鍵。因此,如果 ctrlKey 為 true,則表示按下了 Ctrl 鍵。

接下來,我們檢查按下的字元的keyCode 值,如果是6597,則表示是a ACtrl 鍵一起按下。 KeyboardEvent 物件的 keyCode 屬性傳回按下的按鍵的 Unicode 字元代碼。同樣,您也可以使用 KeyboardEvent 物件的 <strong>shiftKey</strong> 屬性,該屬性告訴您在按下按鍵事件時是否按下了 Shift 鍵。觸發。

最後,讓我們看一下以下範例,該範例示範如何在 HTML 表單的輸入欄位中僅允許使用字母。

<script>
function allowOnlyAlphabets(event) {
  var charCode = event.keyCode;

  if ((charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123))
    return true;
  else
    return false;
}
</script>
<html>
  <body>
    <div>
        <input type="text" onkeydown="return allowOnlyAlphabets(event);">
    </div>
  </body>
</html>

在上面的範例中,我們在輸入文字方塊上定義了 keydown 事件。因此,當使用者在文字方塊中輸入任何文字時,它會呼叫 allowOnlyAlphabets 函數。在 allowOnlyAlphabets 函數中,我們根據字母表的有效 Unicode 範圍驗證了事件物件的 keyCode 屬性的值。因此,如果使用者按下有效的字母字符,則 allowOnlyAlphabets 函數將傳回 true,否則將傳回 false。最終結果是用戶將無法輸入除字母之外的任何字元。

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn