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

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
WordPress開發的5個最佳ID(以及原因)WordPress開發的5個最佳ID(以及原因)Mar 03, 2025 am 10:53 AM

我為WordPress開發選擇了正確的綜合開發環境(IDE)十年後,我探索了WordPress開發的眾多集成開發環境(IDE)。 純粹的品種 - 從免費到商業,基本到FEA

使用OOP技術創建WordPress插件使用OOP技術創建WordPress插件Mar 06, 2025 am 10:30 AM

本教程演示了使用面向對象的編程(OOP)原理構建WordPress插件,利用Dribbble API。 讓我們在保留原始含義和結構的同時完善文本以清晰和簡潔。 object-ori

如何將PHP數據和字符串傳遞給WordPress中的JavaScript如何將PHP數據和字符串傳遞給WordPress中的JavaScriptMar 07, 2025 am 09:28 AM

將PHP數據傳遞給JavaScript的最佳實踐:WP_LOCALIZE_SCRIPT和WP_ADD_INLINE_SCRIPT的比較是PHP文件中靜態字符串中數據存儲數據的最佳實踐。 如果在您的JavaScript代碼中需要此數據,請合併

如何使用WordPress插件嵌入和保護PDF文件如何使用WordPress插件嵌入和保護PDF文件Mar 09, 2025 am 11:08 AM

本指南演示瞭如何使用WordPress PDF插件在WordPress帖子和頁面中嵌入和保護PDF文件。 PDFS為從目錄到演示文稿提供了一種用戶友好的,普遍訪問的格式。 此方法ENS

對於初學者來說,WordPress容易嗎?對於初學者來說,WordPress容易嗎?Apr 03, 2025 am 12:02 AM

WordPress對初學者來說容易上手。 1.登錄後台後,用戶界面直觀,簡潔的儀表板提供所有必要功能鏈接。 2.基本操作包括創建和編輯內容,所見即所得的編輯器簡化了內容創建。 3.初學者可以通過插件和主題擴展網站功能,學習曲線存在但可以通過實踐掌握。

為什麼有人會使用WordPress?為什麼有人會使用WordPress?Apr 02, 2025 pm 02:57 PM

人們選擇使用WordPress是因為其強大和靈活性。 1)WordPress是一個開源的CMS,易用性和可擴展性強,適合各種網站需求。 2)它有豐富的主題和插件,生態系統龐大,社區支持強大。 3)WordPress的工作原理基於主題、插件和核心功能,使用PHP和MySQL處理數據,支持性能優化。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
1 個月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用