天天看點

鍵盤按鍵事件

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <meta http-equiv="X-UA-Compatible" content="IE=edge">

  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <title>Document</title>

  <style>

    #box1{

      width: 100px;

      height: 100px;

      background-color: red;

      position: fixed;

      top: 50px; 

    }

  </style>

  <script>

    window.onload = function(){

        /**

         *  使 div 可以根據不同的方向鍵 向不同的方向移動 

         *  按左鍵 div 向左移

         *  按右鍵 div 

         *   ...

         * */ 

        var box1 = document.getElementById("box1");  

         document.onkeydown = function(event){

            event = event || window.event;

            // 定義一個 變量 來表示 移動的速度

            var speed = 10;

            // 當使用者按了 ctrl 以後, 速度加快

            if(event.ctrlKey){

              speed = 500;

            }

            /**

             *  37 左

             *  38 上

             *  39 右

             *  40 下

            */

           switch (event.keyCode) {

             case 37:

              //  alert("向左"); // left 值減小

               box1.style.left = box1.offsetLeft - speed + 'px'

               break;

             case 39:

              //  alert("向右");

               box1.style.left = box1.offsetLeft + speed + 'px'

               break;  

              case 38:

              //  alert("向上");

               box1.style.top = box1.offsetTop - speed + 'px'

               break; 

              case 40:

              //  alert("向下");

              box1.style.top = box1.offsetTop + speed + 'px'

             default:

           }

           if(event.key){

         }

          /**

           * 鍵盤事件

           * onkeydown

           *   按鍵被按下 

           *      對于onkeydown 來說 如果一直按着 某個按鍵不松手 則事件會一直觸發

           *      當onkeydown 連續觸發時, 第一次和第二次之間會間隔稍微長一點,其他的會非常的快

           *         這種設計 是為了 防止誤操作的發生

           * onkeyup  

           *   按鍵被松開

           * 

           * 鍵盤事件一般 都會綁定給一些可以擷取到焦點的對象 或者 document

          */   

          // document.onkeydown = function(event){

          //   event = event || window.event;

             *  可以通過 keyCode 來擷取按鍵的編碼

             *  通過它 可以判斷哪個按鈕被按下了

             *  除了 keyCode 事件對象中還提供了幾個屬性

             *  altKey 

             *  ctrlKey

             *  shiftKey

             *    這三個用來判斷 alt ctrl 和 shift 是否被按下

             *    如果按下則傳回true,否則傳回 false

            // 判讀一個 y 是否被按下

            // if(event.keyCode === 89){

            //   console.log('y被按下了');

            // }

            // 判斷 y 和 ctrl 是否被同時按下

          //   if(event.keyCode === 89 && event.ctrlKey){

          //     console.log('ctrl+y都被按下了');

          //   }

          //   // console.log(event.keyCode);

          // }

          // document.onkeyup = function(){

          //   console.log('按鍵松開了');

          // 擷取input

          // var input = document.getElementsByTagName("input")[0];

          // input.onkeydown = function(event){ 

          //   event = event || window.event; 

          //   // 數字 48-57  禁止輸入數字

          //   if(event.keyCode >= 48 && event.keyCode <=57){

          //     // 取消預設行為

          //     return false; 

            // 隻能輸入數字

            // if(event.keyCode >= 48 && event.keyCode <=57){ 

            // }else{

            //   // 取消預設行為

            //   return false; 

          //   console.log(event.keyCode); 

  </script>

</head>

<body >

  <div id="box1"></div>

  <input type="text">

</body>

</html>

繼續閱讀