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()" />
对应的js函数:
function keyup(){ ...}
function keypress(){ ...}
function keydown(){ ...}
注意:
- keydown触发后,不一定触发keyup,当keydown 按下后,拖动鼠标,那么将不会触发keyup事件。
- keypress主要用来捕获数字(注意:包括shift+数字的符号)、字母(注意:包括大小写)、小键盘等除了f1-12、shift、alt、ctrl、insert、home、pgup、delete、end、pgdn、scrolllock、pause、numlock、{菜单键}、{开始键}和方向键外的ansi字符
- 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按键事件
通过一种钩子的方式可以判定prscrn 按键事件,钩子可以获取任何键盘事件。
本文转自 博客园 码农小兵 原文链接:https://www.cnblogs.com/manongxiaobing/archive/2012/11/05/2755412.html
以下是一些键盘上的键对应的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 |
f1 |
上一篇: 盘点因为名字不好听被剥夺状元的人 名字取得好状元跑不了
下一篇: 23种设计模式之中介者模式