Element: keyup 事件
當按鍵釋放時,會觸發 keyup 事件。
keydown 和 keyup 事件提供了一個程式碼,指示按下了哪個鍵,而 keypress 則指示輸入了哪個字元。例如,小寫字母 "a" 將被 keydown 和 keyup 報告為 65,但被 keypress 報告為 97。大寫字母 "A" 則被所有事件報告為 65。
按鍵事件的事件目標是當前正在處理鍵盤活動的焦點元素。這包括:<input>、<textarea>、任何 contentEditable 的內容,以及任何其他可以透過鍵盤互動的元素,例如 <a>、<button> 和 <summary>。如果沒有合適的元素獲得焦點,事件目標將是 <body> 或根元素。事件會冒泡。它可以到達 Document 和 Window。
事件目標可能會在不同的按鍵事件之間發生變化。例如,按下 Tab 鍵時的 keydown 目標將與 keyup 目標不同,因為焦點已經改變。
語法
在諸如 addEventListener() 之類的方法中使用事件名稱,或設定事件處理程式屬性。
addEventListener("keyup", (event) => { })
onkeyup = (event) => { }
事件型別
一個 KeyboardEvent。繼承自 UIEvent 和 Event。
事件屬性
此介面還繼承其父級 UIEvent 和 Event 的屬性。
KeyboardEvent.altKey只讀-
返回一個布林值,如果生成按鍵事件時 Alt 鍵(macOS 上為 Option 或 ⌥ 鍵)處於活動狀態,則返回
true。 KeyboardEvent.code只讀-
返回一個字串,其中包含事件所代表的物理鍵的程式碼值。
警告: 這會忽略使用者的鍵盤佈局,因此如果使用者在 QWERTY 鍵盤佈局中按下 "Y" 位置的鍵(在主行上方一行的中間附近),這將始終返回 "KeyY",即使使用者使用的是 QWERTZ 鍵盤(這意味著使用者期望一個 "Z",所有其他屬性也將指示一個 "Z")或 Dvorak 鍵盤佈局(使用者期望一個 "F")。如果你想向用戶顯示正確的按鍵,可以使用
Keyboard.getLayoutMap()。 KeyboardEvent.ctrlKey只讀-
返回一個布林值,如果生成按鍵事件時 Ctrl 鍵處於活動狀態,則返回
true。 KeyboardEvent.isComposing只讀-
返回一個布林值,如果事件在
compositionstart之後和compositionend之前觸發,則返回true。 KeyboardEvent.key只讀-
返回一個字串,表示事件所代表的鍵的鍵值。
KeyboardEvent.location只讀-
返回一個數字,表示鍵盤或其他輸入裝置上按鍵的位置。標識位置的常量列表顯示在鍵盤位置中。
KeyboardEvent.metaKey只讀-
返回一個布林值,如果生成按鍵事件時 Meta 鍵(Mac 鍵盤上的 ⌘ Command 鍵;Windows 鍵盤上的 Windows 鍵 (⊞))處於活動狀態,則返回
true。 KeyboardEvent.repeat只讀-
返回一個布林值,如果按鍵被按住並自動重複,則返回
true。 KeyboardEvent.shiftKey只讀-
返回一個布林值,如果生成按鍵事件時 Shift 鍵處於活動狀態,則返回
true。
示例
addEventListener keyup 示例
當你在 <input> 元素內釋放一個鍵時,此示例會記錄 KeyboardEvent.code 值。
<input placeholder="Click here, then press and release a key." size="40" />
<p id="log"></p>
const input = document.querySelector("input");
const log = document.getElementById("log");
input.addEventListener("keyup", logKey);
function logKey(e) {
log.textContent += ` ${e.code}`;
}
IME 的 keyup 事件
自 Firefox 65 起,keydown 和 keyup 事件現在在輸入法編輯器合成期間觸發,以改善 CJKT 使用者的跨瀏覽器相容性(Firefox bug 354358)。要忽略所有作為合成一部分的 keyup 事件,請執行以下操作:
eventTarget.addEventListener("keyup", (event) => {
if (event.isComposing) {
return;
}
// do something
});
注意: 與 keydown 不同,keyup 事件沒有 IME 事件的特殊 keyCode 值。然而,與 keydown 類似,當輸入第一個字元開啟 IME 時,compositionstart 可能會在 keyup 之後觸發;當輸入最後一個字元關閉 IME 時,compositionend 可能會在 keyup 之前觸發。在這些情況下,即使事件是合成的一部分,isComposing 也為 false。
規範
| 規範 |
|---|
| UI 事件 # event-type-keyup |
| HTML # handler-onkeyup |
瀏覽器相容性
載入中…