1. 程式人生 > 其它 >Dom 鍵盤事件以及實戰案例

Dom 鍵盤事件以及實戰案例

鍵盤事件
  //鍵盤操作
        //1.某鍵盤按下執行的操作  document是對文件進行觸發
        document.onkeyup = function(){
            console.log('你好')
        }
        document.addEventListener('keyup',function(){
            console.log('你好')
        })
        //2.某鍵盤按下操作,此執行,只要鍵盤一直按著,就一直重複執行
        document.onkeydown = function(){   
            console.log(
'按了鍵盤') } document.addEventListener('keydown',function(){ console.log('我按下了鍵盤') }) document.addEventListener('keypress',function(){ //keypress 事件是不能識別功能鍵的,比如:ctrl、左右箭頭 console.log('我按了press鍵') }) //注意:如果keyup、keydown和keypress,同時出現執行順序 keydown->keypress->keyup
//可以檢視到執行過程和屬性 document.addEventListener('keyup',function(e){ console.log(e) }) //keyCode 是對應鍵盤的Ascll碼值 //注意:keyup和keydown 不區分字母大小寫,如果想區分可以用可以keypress 案例一: //京東首頁按s鍵游標自動定位到搜尋框 var search = document.querySelector('input'); document.addEventListener(
'keyup',function(){ //用keyup事件是因為keydown執行並將內容賦值給input.value if(e.keyCode === 83) { //s的Ascll碼是83 search.focus(); //讓搜尋框得到游標 } }) 案例二: //京東訂單查詢功能 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> * { margin: 0; padding: 0; } .search { position: relative; width: 178px; margin: 100px; } .con { display: none; position: absolute; top: -40px; width: 171px; border: 1px solid rgba(0, 0, 0, .2); box-shadow: 0 2px 4px rgba(0, 0, 0, .2); padding: 5px 0; font-size: 18px; line-height: 20px; color: #333; } .con::before { content: ''; width: 0; height: 0; position: absolute; top: 28px; left: 18px; /*倒三角型的定義*/ border: 8px solid #000; border-style: solid dashed dashed; border-color: #fff transparent transparent; } </style> </head> <body> <div class="search"> <div class="con">123</div> <input type="text" class="jd" placeholder="請輸入快遞單號"> </div> <script> 思路: // 快遞單號輸入內容時, 上面的大號字型盒子(con)顯示(這裡面的字號更大) // 表單檢測使用者輸入: 給表單新增鍵盤事件 // 同時把快遞單號裡面的值(value)獲取過來賦值給 con盒子(innerText)做為內容 // 如果快遞單號裡面內容為空,則隱藏大號字型盒子(con)盒子 //獲取元素 var con = document.querySelector('.con'); var jd_input = document.querySelector('.jd'); jd_input.addEventListener('keyup',function(){ /*注意:事件觸發keydown和keypress在文字框裡面的特點: 他們兩個事件觸發的時候,文字還沒有落入文字中去*/ if (this.value == ''){ con.style.display = 'none'; } else { con.style.display = 'block'; con.innerHTML = this.value; } }) //得到焦點 jd_input.addEventListener('blur',function(){ con.style.display = 'none'; }) //失去焦點 jd_input.addEventListener('foucs',function(){ if(jd_input !== ''){ con.style.display = 'block' } }) </script> </body> </html>