键盘事件一般会绑定给一些可以获取到焦点的对象(比如input)或者document
var input=document.getElementsByTagName("input")[0];
input.onkeydown=function(event){
event=event || window.event;
//使文本框中不能装入数字,数字编码为48-57
if(event.keyCode>=48 && event.keyCode<=57){
//在文本框输入内容属于onkeydown默认行为,取消了,输入内容不会出现在文本库中
return false;
}
}
onkeydown
onkeydown 某个键盘按键被按下 :如果一直按着一个键盘不松手,事件就会一直被触发,当连续触发时,第一次和第二次时间间隔会久一点,这是防止误触
document.onkeydown=function(){
console.log("被触发了");
}
onkeyup
onkeyup 某个键盘按键被松开
document.onkeyup=function(){
console.log("被触发了");
}
keyCode
keyCode 对于 keypress 事件,该属性声明了被敲击的键生成的 Unicode 字符码。对于 keydown 和 keyup 事件,它指定了被敲击的键的虚拟键盘码。虚拟键盘码可能和使用的键盘的布局相关。 event.keyCode;//得到对应键盘的编码
//判断y和ctrl同时被按下
if(event.keyCode===89&&event.ctrlKey){
alert("ctrl和y键都被按下了")
}
altKey 返回当事件被触发时,“ALT” 是否被按下
ctrlKey 返回当事件被触发时,“CTRL” 键是否被按下。
shiftKey 返回当事件被触发时,“SHIFT” 键是否被按下。
练习
要求:按下左键,div向左;右键向右;上键向上;下键向下
//按下CTRL速度加快
if(event.ctrlKey){
speed=50;
}
//left 37;up 38; right 39;down 40
switch(event.keyCode){
case 37:
box1.style.left=box1.offsetLeft-speed+"px";
break;
case 38:
box1.style.top=box1.offsetTop-speed+"px";
break;
case 39:
box1.style.left=box1.offsetLeft+speed+"px";
break;
case 37:
box1.style.top=box1.offsetTop+speed+"px";
break;
}
}