vue監(jiān)聽(tīng)鍵盤(pán)事件的相關(guān)總結(jié)
按鍵修飾符
在監(jiān)聽(tīng)鍵盤(pán)事件時(shí),我們經(jīng)常需要檢查詳細(xì)的按鍵。Vue 允許為 v-on 在監(jiān)聽(tīng)鍵盤(pán)事件時(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)或鍵盤(pán)事件的監(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” 代替。
附錄-鍵盤(pán)按鈕keyCode表


以上就是vue監(jiān)聽(tīng)鍵盤(pán)事件的相關(guān)總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于vue監(jiān)聽(tīng)鍵盤(pán)事件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Vue-cli@3.0 插件系統(tǒng)簡(jiǎn)析
Vue-cli@3.0 是一個(gè)全新的 Vue 項(xiàng)目腳手架。這篇文章主要介紹了Vue-cli@3.0 插件系統(tǒng)簡(jiǎn)析,需要的朋友可以參考下2018-09-09
基于前端VUE+ElementUI實(shí)現(xiàn)table行上移或下移功能(支持跨頁(yè)移動(dòng))
有時(shí)候需要前端實(shí)現(xiàn)上移和下移功能,下面這篇文章主要給大家介紹了關(guān)于如何基于前端VUE+ElementUI實(shí)現(xiàn)table行上移或下移(支持跨頁(yè)移動(dòng))的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07
基于Vue實(shí)現(xiàn)我的錢包充值功能的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何基于Vue實(shí)現(xiàn)我的錢包充值功能,文中的示例代碼簡(jiǎn)潔易懂,具有一定的借鑒價(jià)值,有需要的小伙伴可以參考一下2024-01-01
Vue自定義指令實(shí)現(xiàn)按鈕級(jí)的權(quán)限控制的示例代碼
在Vue中可以通過(guò)自定義指令來(lái)實(shí)現(xiàn)按鈕權(quán)限控制,本文主要介紹了Vue自定義指令實(shí)現(xiàn)按鈕級(jí)的權(quán)限控制的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05
preload對(duì)比prefetch的功能區(qū)別詳解
這篇文章主要為大家介紹了preload對(duì)比prefetch的使用區(qū)別詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
vue實(shí)現(xiàn)靜態(tài)頁(yè)面點(diǎn)贊和取消點(diǎn)贊功能
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)靜態(tài)頁(yè)面點(diǎn)贊和取消點(diǎn)贊的功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02

