vue.js 鍵盤enter事件的使用


在監聽鍵盤事件時,我們經常需要檢查常見的鍵值。Vue 允許為 v-on 在監聽鍵盤事件時添加按鍵修飾符:

<!-- 只有在 `keyCode` 是 13 時調用 `vm.submit()` -->
<input v-on:keyup.13="submit">

記住所有的 keyCode 比較困難,所以 Vue 為最常用的按鍵提供了別名:

<!-- 同上 -->
<input v-on:keyup.enter="submit">

<!-- 縮寫語法 -->
<input @keyup.enter="submit">

在使用過程中,如果頁面只針對一個Input添加鍵盤enter事件,可以直接按照官方文檔定義的別名增加相應事件就可以了

但是如果是要對頁面的button添加enter鍵盤事件,就不能寫在input或者button上,因為獲取不到焦點,這時候可以直接寫在created里,如下:


<template>
<div class="form-inline col-sm-12">

// 錯誤寫法:這么寫沒有生效
<input class="form-control search-input" type="search" placeholder="輸入用戶名進行搜索" aria-label="Search" maxlength="32" v-model.trim="search_value" @keyup.enter="enterSearchMember">

<button class="btn btn-primary btn-sch" type="button" @click="goSearch">搜索</button>
</div>
</template>
<script>
export default {
name: 'searchMember',
data() {
return {
search_value: ''
}
},

//不能直接將事件添加寫在input上,因為這樣必須焦點在input上才能觸發,所以可以直接綁定在document上即可
created() {
var lett = this;
document.onkeydown = function(e) {
var key = window.event.keyCode;
if (key == 13) {
lett.enterSearchMember();
}
}
},
methods: {
goSearch: function() {
let search_nick = this.search_value;
if (search_nick !== 0) {
this.$emit('searchMember', search_nick)
}
},
enterSearchMember() {
this.goSearch()
}
}
}
</script>


補充一個問題:

當我們對input添加enter鍵盤事件后,點擊enter頁面會刷新,可能是因為你把input寫在了form里,form會自動提交一次,頁面就是一個刷新的效果,這樣體驗並不好

解決辦法:

1、去掉form

2、如果非得用表單,只要不讓表單里有且只有一個文本框就OK了

3、在表單 form 后面加上一個 onsubmit 事件,返回 false,來阻止 form 提交



vue全部的按鍵別名:

  • .enter
  • .tab
  • .delete (捕獲“刪除”和“退格”鍵)
  • .esc
  • .space
  • .up
  • .down
  • .left
  • .right


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM