Element: keypress 事件

已弃用:此特性不再推荐。虽然某些浏览器可能仍然支持它,但它可能已经从相关的网络标准中删除,可能正在删除过程中,或者可能仅为兼容性目的而保留。请避免使用它,如果可能,请更新现有代码;请参阅本页底部的兼容性表格以指导您的决策。请注意,此特性可能随时停止工作。

当按下字母、数字、标点符号或符号键,或者按下 Enter 键时(包括 Enter 键与 Shift 键或 Ctrl 键组合按下时),会触发 keypress 事件。但是,当单独按下 AltShiftCtrlMetaEscOption 等修饰键时,不会触发 keypress 事件。

警告: 由于此事件已弃用,您应该改用 beforeinputkeydown

此事件冒泡。它可以到达 DocumentWindow

语法

在诸如 addEventListener() 之类的方法中使用事件名称,或设置事件处理程序属性。

js
addEventListener("keypress", (event) => { })

onkeypress = (event) => { }

事件类型

一个 KeyboardEvent。继承自 UIEventEvent

Event UIEvent KeyboardEvent

事件属性

此接口还继承其父级 UIEventEvent 的属性。

KeyboardEvent.altKey 只读

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

KeyboardEvent.code 只读

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

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 keypress 示例

此示例会在您聚焦 <input> 元素后按下任意键时,记录 KeyboardEvent.code 的值。

要查看哪些键会触发 keypress 事件,哪些键不会,请尝试按下以下键:

  • 字母键、数字键和标点符号键
  • 符号键,例如 $+=%+
  • 修饰键,例如 AltShiftCtrlMetaEscOption
  • Enter
  • Enter 键与 Shift 键或 Ctrl 键组合按下
  • Enter 键与 Shift 键或 Ctrl 键之外的其他修饰键组合按下
html
<div>
  <label for="sample">Focus the input and type something:</label>
  <input type="text" name="text" id="sample" />
</div>
<p id="log"></p>
js
const log = document.getElementById("log");
const input = document.querySelector("input");

input.addEventListener("keypress", logKey);

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

onkeypress 等效

js
input.onkeypress = logKey;

规范

规范
UI 事件
# 事件类型 keypress
HTML
# 处理程序 onkeypress

浏览器兼容性

另见