keydown
:::info 键盘按键按下的事件 :::
document.onkeydown = function () {
console.log("keydown");
};
keyup
:::info 键盘按键按下抬起的事件 :::
document.onkeyup = function () {
console.log("keyup");
};
keypress
:::info 键盘按键按下的事件 :::
document.onkeypress = function () {
console.log("keypress");
}
keydown
和keypress
都表示按键按下事件,但是他们之前存在区别。
1、当keydown
和keypress
事件都存在的时候,keydown
会比keypress
先触发。
document.onkeypress = function (event) {
console.log("onkeypress")
};
document.onkeydown = function (event) {
console.log("onkeydown")
};
// 例如按下字母 Q 键,结果如下:
// onkeydown
// onkeypress
2、keydown
事件没有charCode
属性,keypress
事件有charCode
属性
document.onkeydown = function (event) {
var event = event || window.event;
console.log(event.charCode);
};
document.onkeypress = function (event) {
var event = event || window.event;
console.log(event.charCode);
};
// 例如按下字母 Q 键,结果如下:
// 0 113
// 例如按下字母 A 键,结果如下:
// 0 97
// 例如按下字母 Z 键,结果如下:
// 0 122
charCode
表示ASCLL
表里面的字符,当按下的按键在ASCLL
中不存在就会不触发keypress
事件。
String.fromCharCode(Number); 该方法接收一个数字表示在
ASCLL
中的位置,返回该位置的字符串。
document.onkeypress = function (event) {
var event = event || window.event;
console.log(String.fromCharCode(event.charCode))
};
// 例如按下字母 Q 键,结果如下:
// q
// 例如按下 Shift+Q 键,结果如下:
// Q
// 例如按下 Shift 键,不会触发 keypress 事件!!!
3、keydown
和keypress
都有keyCode
属性,而keypress
中的keyCode
和charCode
是一样的都表示字符在ASCLL
表中字符的位置!!!
document.onkeypress = function (event) {
var event = event || window.event;
console.log(event.keyCode);
};
document.onkeydown = function (event) {
var event = event || window.event;
console.log(event.keyCode);
};
// 例如按下字母 Q 键,结果如下:
// 81 113
// 例如按下字母 A 键,结果如下:
// 65 97
// 例如按下字母 Z 键,结果如下:
// 90 122
// 例如按下 Shift 键,结果如下:
// 16
// 因为按下非 ASCLL 表里的字符不会触发 keypress 事件
keyCode
在keydown
事件中keyCode
表示按键的键码,常见的键码如下:
案例用上下左右按键控制div
进行移动:
var oDiv = document.getElementsByClassName("box")[0];
document.onkeydown = function (event) {
var event = event || window.event,
code = event.keyCode,
bLeft = parseInt(window.getComputedStyle(oDiv, null).left),
bTop = parseInt(window.getComputedStyle(oDiv, null).top);
switch (code) {
case 37:
oDiv.style.left = bLeft - 5 + "px";
break;
case 39:
oDiv.style.left = bLeft + 5 + "px";
break;
case 38:
oDiv.style.top = bTop - 5 + "px";
break;
case 40:
oDiv.style.top = bTop + 5 + "px";
break;
}
};