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 |
浏览器兼容性
加载中…