键盘事件onkeydown和onkeyup

键盘事件:

onkeydown       按键被按下                  若一直按着某个按键不松,则事件一直被触发,在连续触发时第一次和第二次之间时间会稍长一些。这样设计师为了防止误操作。

onkeyup           按键被松开

键盘事件一般都会绑定给一些可以获取到焦点的对象或是document

例如div是无法获取焦点的,prompt()输入框是可以获取焦点的。

例:

<script>
  window.onload = function(){
       //给文档绑定键盘事件:onkeydown  键盘被按下
     document.onkeydown = function(event){
         //返回按键的Code编码
      console.log(event.keyCode);                                  
 };
          };

</script>

我们可以通过keyCode来获取被按下键盘的unicode编码,从而来判断按下的是哪个按钮。

键盘事件除了提供keyCode来判断之外,还提供了以下几个属性。

altkey    ctrlkey  shiftkey    通过这三个按钮来判断alt、ctrl、shift是否被按下,是则返回ture 否则返回false.

window.onload = function(){
       document.onkeydown = function(event){
             event= event||window.event
   //判断w和alt是否被同时按下,是则弹出hello.
       if(event.keyCode == 87 && event.altkey){
          alert("hello");
          };
     }; 
};

在文本框中输入内容,是onkeydown的默认行为。

数字的keycode是48~57.只输入数字可以做条件表达式。keyCode >=48&&keyCode<=57

键盘上的上、下、左、右四个Code编码是38、40、37、39.

W:87   A:65  S:83  D:68  

做个练习:

通过键盘控制div的上下左右移动。

 <style>
    #box1{ width: 100px;
            height: 100px;
            background: yellowgreen;
            position: absolute;

    }
    body{background-color:gray;
    }
    
    </style>
    <script>
   window.onload= function(){
      
      var box1  = document.getElementById("box1");
      var speed =10;
      document.onkeydown = function(event){

         event= event||window.event;

         switch(event.keyCode){
             case 38:
             //console.log("向上");
             box1.style.top = box1.offsetTop - speed +"px";
             break;
             case 40:
             //console.log("向下");
             box1.style.top = box1.offsetTop + speed + "px";
             break;
             case 37:
             //console.log("向左");             
             box1.style.left = box1.offsetLeft - speed + "px";
             break;
             case 39:
             //console.log("向右");
             box1.style.left = box1.offsetLeft +speed +"px";
             break;
         };

      };
   };
     
          
    
    </script>

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值