溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何在vue項(xiàng)目中對(duì)鍵盤事件進(jìn)行監(jiān)聽(tīng)

發(fā)布時(shí)間:2021-01-29 14:44:57 來(lái)源:億速云 閱讀:351 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

如何在vue項(xiàng)目中對(duì)鍵盤事件進(jìn)行監(jiān)聽(tīng)?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

按鍵修飾符

在監(jiān)聽(tīng)鍵盤事件時(shí),我們經(jīng)常需要檢查詳細(xì)的按鍵。Vue 允許為 v-on 在監(jiān)聽(tīng)鍵盤事件時(shí)添加按鍵修飾符:

<!-- 只有在 `key` 是 `Enter` 時(shí)調(diào)用 `vm.submit()` -->
<input v-on:keyup.enter="submit">

你可以直接將 KeyboardEvent.key 暴露的任意有效按鍵名轉(zhuǎn)換為 kebab-case 來(lái)作為修飾符。

<input v-on:keyup.page-down="onPageDown">

為了在必要的情況下支持舊瀏覽器,Vue 提供了絕大多數(shù)常用的按鍵碼的別名:

  • - enter 

  • - tab 

  • - delete (捕獲“刪除”和“退格”鍵) 

  • - esc 

  • - space 

  • - up 

  • - down 

  • - left 

  • - right

你還可以通過(guò)全局 config.keyCodes 對(duì)象自定義按鍵修飾符別名: 

// 可以使用 `v-on:keyup.f1`
Vue.config.keyCodes.f1 = 112

系統(tǒng)修飾鍵

可以用如下修飾符來(lái)實(shí)現(xiàn)僅在按下相應(yīng)按鍵時(shí)才觸發(fā)鼠標(biāo)或鍵盤事件的監(jiān)聽(tīng)器。 

  • - .ctrl 

  • - .alt 

  • - .shift 

  • - .meta

Do something
與按鍵別名不同的是,修飾鍵和 keyup 事件一起用時(shí),事件引發(fā)時(shí)必須按下正常的按鍵。換一種說(shuō)法:如果要引發(fā) keyup.ctrl,必須按下 ctrl 時(shí)釋放其他的按鍵;單單釋放 ctrl 不會(huì)引發(fā)事件。

<!-- 按下Alt + 釋放C觸發(fā) -->
<input @keyup.alt.67="clear">
 
<!-- 按下Alt + 釋放任意鍵觸發(fā) -->
<input @keyup.alt="other"><!-- 按下Ctrl + enter時(shí)觸發(fā) --><input @keydown.ctrl.13="submit">

對(duì)于elementUI的input,我們需要在后面加上.native, 因?yàn)閑lementUI對(duì)input進(jìn)行了封裝,原生的事件不起作用。

<input v-model="form.name" placeholder="昵稱" @keyup.enter="submit">

<el-input v-model="form.name" placeholder="昵稱" @keyup.enter.native="submit"></el-input>

.exact修飾符

.exact 修飾符允許你控制由精確的系統(tǒng)修飾符組合觸發(fā)的事件。 

<!-- 即使 Alt 或 Shift 被一同按下時(shí)也會(huì)觸發(fā) -->
<button v-on:click.ctrl="onClick">A</button>

<!-- 有且只有 Ctrl 被按下的時(shí)候才觸發(fā) -->
<button v-on:click.ctrl.exact="onCtrlClick">A</button>

<!-- 沒(méi)有任何系統(tǒng)修飾符被按下的時(shí)候才觸發(fā) -->
<button v-on:click.exact="onClick">A</button>

鼠標(biāo)按鈕修飾符

  • .left 

  • .right 

  • .middle

這些修飾符會(huì)限制處理函數(shù)僅響應(yīng)特定的鼠標(biāo)按鈕。 

系統(tǒng)按鍵組合

如果我們要監(jiān)聽(tīng)全局的按鍵操作方法,顯然,將其綁定在頁(yè)面元素上是不行的。

我們可在mounted里面監(jiān)聽(tīng):

mounted() {
  document.onkeydown = function (event) {
    let key = window.event.keyCode;
    if (key === 65 && event.ctrlKey) { 
      // 監(jiān)聽(tīng)ctrl+A組合鍵      
      window.event.preventDefault(); //關(guān)閉瀏覽器默認(rèn)快捷鍵      
      console.log('crtl+ a組合鍵')    
    } else if(key === 83 && event.ctrlKey) {       
      window.event.preventDefault(); //關(guān)閉瀏覽器快捷鍵
      console.log('保存');
    }
  }
}

從以上例子可以看出,shift、Control、Alt 在JS中也可用“window.event.shiftKey”、“window.event.ctrlKey”、“window.event.altKey” 代替。

附錄-鍵盤按鈕keyCode表

如何在vue項(xiàng)目中對(duì)鍵盤事件進(jìn)行監(jiān)聽(tīng)

如何在vue項(xiàng)目中對(duì)鍵盤事件進(jìn)行監(jiān)聽(tīng)

關(guān)于如何在vue項(xiàng)目中對(duì)鍵盤事件進(jìn)行監(jiān)聽(tīng)問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

vue
AI