JavaScript 键盘事件详解:keydown、keypress 与 keyup 的区别及应用
本文深入解析JavaScript中的三种键盘事件:keydown、keypress和keyup。详细对比它们在触发时机、大小写敏感性及组合键捕获能力上的差异,重点说明为何使用keyup处理Ctrl等修饰键组合更准确。提供全局及组件级监听示例,并附带完整的keyCode对照表,帮助开发者精准实现键盘交互逻辑。
键盘事件监听基础与示例
首先介绍如何监听全局的键盘按下事件,以监听全局的回车键为例。
$(document).keydown(function(event){
if(event.keyCode == 13){
alert('你按下了Enter');
}
});
其次,演示如何针对特定组件监听键盘按下事件,例如监听ID为btn的按钮组件的回车按下事件。
$("#btn").keydown(function(event){
if(event.keyCode==13){
alert('你按下了Enter');
}
});
如果需要监听组合键,例如Ctrl+C的组合操作,可以通过特定方式实现。
$(document).keyup(function(event){
if(event.ctrlKey && event.keyCode==67){
alert('你按下了CTRL+C')
}
});
以下是详细的keyCode值列表,供开发者参考。




keydown、keypress与keyup事件详解
接下来深入解析js中的keyup、keypress和keydown事件。
js中的keyup、keypress和keydown事件均属于键盘相关的事件类型。
当现代浏览器中任何一个按键被按下(pressed)或释放(released)时,都会触发三种客户端事件。
keydown event keypress event keyup event
keydown事件在键盘键被按下的瞬间触发,随后通常会触发keypress事件。而keyup事件则在按键被释放时触发。
这三个事件在页面中的具体使用方法如下例所示:
<input id="testkeyevent" name="testkeyevent" onKeyUp="keyup()" /> <input id="testkeyevent" name="testkeyevent" onkeypress="keypress()" /> <input id="testkeyevent" name="testkeyevent" onkeydown="keydown()" />
对应的JavaScript处理函数如下:
function keyup(){ ...} function keypress(){ ...} function keydown(){ ...}
三种键盘事件的关键区别
需要注意以下几点关键区别:
KeyDown触发后,不一定触发KeyUp。例如,当KeyDown按下后若拖动鼠标,则不会触发KeyUp事件。 KeyPress主要用于捕获数字(包括Shift+数字的符号)、字母(包括大小写)、小键盘等ANSI字符,但不包括F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜单键}、{开始键}和方向键。 KeyDown和KeyUp通常可以捕获键盘上除了PrScrn之外的所有按键(此处不讨论特殊键盘的特殊键)。 KeyPress仅能捕获单个字符。 KeyDown和KeyUp可以捕获组合键。 KeyPress可以捕获单个字符的大小写状态。 KeyDown和KeyUp对于单个字符捕获的KeyValue是相同的,因此无法通过它们判断单个字符的大小写。 KeyPress不区分小键盘和主键盘的数字字符。 KeyDown和KeyUp则区分小键盘和主键盘的数字字符。 其中,PrScrn按键无论使用KeyPress、KeyDown还是KeyUp都无法捕获。
组合键与特殊按键的处理策略
在使用键盘时,通常会用到CTRL+SHIFT+ALT等组合键功能。那么如何判定这些组合键呢?
可以通过KeyUp事件来处理(这里说明一下为什么不用KeyDown,因为在判定KeyDown的时候,CTRL、SHIFT和ALT属于一直按下状态,然后再加另外一个键是不能准确捕获组合键,所以使用KeyDown是不能准确判断出的,要通过KeyUp事件来判定)。
这里简单列举出CTRL+其它键的组合判定代码:
private void Form3_KeyUp(object sender, KeyEventArgs e){
if (e.Control){
MessageBox.Show("KeyUp:Ctrl+" + e.KeyValue.ToString());
}
}
捕获PrScrn按键事件
完整keyCode值对照表
通过一种钩子的方式可以判定PrScrn按键事件,钩子可以获取任何键盘事件。 以下是一些键盘上的键对应的Code:以下是一些键盘上的键对应的Code:
| 键盘按键 | 对应的数码 |
| backspace | 8 |
| tab | 9 |
| enter | 13 |
| shift | 16 |
| ctrl | 17 |
| alt | 18 |
| pause/break | 19 |
| caps lock | 20 |
| escape | 27 |
| page up | 33 |
| Space | 32 |
| page down | 34 |
| end | 35 |
| home | 36 |
| arrow left | 37 |
| arrow up | 38 |
| arrow right | 39 |
| arrow down | 40 |
| insert | 45 |
| delete | 46 |
| 0 | 48 |
| 1 | 49 |
| 2 | 50 |
| 3 | 51 |
| 4 | 52 |
| 5 | 53 |
| 6 | 54 |
| 7 | 55 |
| 8 | 56 |
| 9 | 57 |
| a | 65 |
| b | 66 |
| c | 67 |
| d | 68 |
| e | 69 |
| f | 70 |
| g | 71 |
| h | 72 |
| i | 73 |
| j | 74 |
| k | 75 |
| l | 76 |
| m | 77 |
| n | 78 |
| o | 79 |
| p | 80 |
| q | 81 |
| r | 82 |
| s | 83 |
| t | 84 |
| u | 85 |
| v | 86 |
| w | 87 |
| x | 88 |
| y | 89 |
| z | 90 |
| left window key | 91 |
| right window key | 92 |
| select key | 93 |
| numpad 0 | 96 |
| numpad 1 | 97 |
| numpad 2 | 98 |
| numpad 3 | 99 |
| numpad 4 | 100 |
| numpad 5 | 101 |
| numpad 6 | 102 |
| numpad 7 | 103 |
| numpad 8 | 104 |
| numpad 9 | 105 |
| multiply | 106 |
| add | 107 |
| subtract | 109 |
| decimal point | 110 |
| divide | 111 |
| f1 | 112 |
| f2 | 113 |
| f3 | 114 |
| f4 | 115 |
| f5 | 116 |
| f6 | 117 |
| f7 | 118 |
| f8 | 119 |
| f9 | 120 |
| f10 | 121 |
总结
以上所述是小编给大家介绍的使用JS监听键盘按下事件(keydown event),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对本站网站的支持! 如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
JavaScript零基础入门:从环境搭建到运行第一段代码
2026-11-05 15:29:58
HTML链接中javascript:void(0)的作用及现代替代方案
2026-11-05 10:07:47
在线调试 JS 时怎么引入 jQuery 或 Vue 等第三方库
2026-11-05 08:53:56
原生JavaScript实现简易颜色选择器原理与代码
2026-11-03 23:22:19
JS原生表单序列化:FormData与URLSearchParams用法详解
2026-11-03 23:13:21
