元素:keyup 事件

keyup 事件在释放键时触发。

keydownkeyup 事件提供了一个代码,指示按下哪个键,而 keypress 指示输入了哪个字符。例如,小写字母“a”将由 keydownkeyup 报告为 65,但由 keypress 报告为 97。大写字母“A”由所有事件报告为 65。

键盘事件的事件目标是当前正在处理键盘活动的焦点元素。 这包括:<input><textarea>、任何具有contentEditable属性的元素,以及任何可以与键盘交互的元素,例如 <a><button><summary>。 如果没有合适的元素处于焦点状态,则事件目标将是 <body> 或根元素。 如果事件没有被捕获,它将冒泡DOM 树中,直到到达 Document

事件目标可能会在不同的键盘事件之间发生变化。 例如,按 Tab 键时的 keydown 目标将不同于 keyup 目标,因为焦点已发生改变。

语法

在像 addEventListener() 这样的方法中使用事件名称,或者设置事件处理程序属性。

js
addEventListener("keyup", (event) => {});

onkeyup = (event) => {};

事件类型

事件属性

此接口也继承了其父类 UIEventEvent 的属性。

KeyboardEvent.altKey 只读

返回一个布尔值,如果在生成键盘事件时 Alt (Option 或 macOS 上的 ) 键处于活动状态,则为 true

KeyboardEvent.code 只读

返回一个字符串,其中包含事件所代表的物理键的代码值。

警告: 这会忽略用户的键盘布局,因此如果用户在 QWERTY 键盘布局中的“Y”位置按下键(在主行上方的中间位置附近),即使用户使用 QWERTZ 键盘(这将意味着用户期望是“Z”,而所有其他属性都将指示是“Z”)或 Dvorak 键盘布局(用户将期望是“F”),它也会始终返回“KeyY”。 如果你想向用户显示正确的按键,可以使用 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 值。

html
<input placeholder="Click here, then press and release a key." size="40" />
<p id="log"></p>
js
const input = document.querySelector("input");
const log = document.getElementById("log");

input.addEventListener("keyup", logKey);

function logKey(e) {
  log.textContent += ` ${e.code}`;
}

keyup 事件与 IME

从 Firefox 65 开始,keydownkeyup 事件现在在 IME 组成期间触发,以提高 CJKT 用户的跨浏览器兼容性 (Firefox 错误 354358)。 要忽略所有作为组成部分的 keyup 事件,请执行以下操作

js
eventTarget.addEventListener("keyup", (event) => {
  if (event.isComposing) {
    return;
  }
  // do something
});

注意: 不同于 keydownkeyup 事件没有用于 IME 事件的特殊 keyCode 值。 但是,与 keydown 类似,compositionstart 可能会在输入打开 IME 的第一个字符时 keyup 之后触发,而 compositionend 可能会在输入关闭 IME 的最后一个字符时 keyup 之前触发。 在这些情况下,即使事件是组成部分,isComposing 也是 false。

规范

规范
UI 事件
# event-type-keyup
HTML 标准
# handler-onkeyup

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。

另请参阅