vue中的input框點擊后不聚焦問題
input框點擊后不聚焦問題
廢話不多說直接上代碼
哪個地方要寫input框 就直接把這一部分代碼放上 里面雙向綁定的值和事件換上自己定義的
?<div class="item" @click.stop.prevent="inputPaentClick('input1')"> ? ? ? ? <input ? ? ? ? ? ref="input1" ? ? ? ? ? placeholder="請輸入搜索關鍵詞" ? ? ? ? ? v-model="value" ? ? ? ? ? @keydown.enter="searchs" ? ? ? ? /> ? ? ? </div>
在方法里寫上這些
? inputPaentClick(refName) {undefined ? ? ? //解決input框雙擊才可以聚焦問題 ? ? ? this.$nextTick(() => {undefined ? ? ? ? this.$refs[refName] && this.$refs[refName].focus(); ? ? ? }); ? ? }
只復制這些就行 input里綁定的事件以及要實現(xiàn)的方法 寫在這個事件同級的地方
vue input聚焦的坑
點擊按鈕,使某個input框聚焦
1、給 input 加個 ref 屬性,寫個 button 按鈕并加個點擊事件
<input type="text" ref="input"> <button @click="onFocus"></button>
2、onFocus方法:
onFocus() { ? ? this.$refs.input.focus() ? }
加載頁面時自動聚焦
mounted() { ? ? this.$nextTick(() => { ? ? ? this.$refs.input.focus() ? ? }) ? },
【坑】
如果input框是隱藏的,點擊某個元素讓input框顯示,同時聚焦,這個時候聚焦效果就不會實現(xiàn)。
解決辦法:
點擊元素的時候用個變量做標識,然后再watch里面去監(jiān)聽這個變量,通過判斷這個變量的值來聚焦,
可以寫在setTimeout里面,或者寫在nextTick里面即可解決問題;代碼如下
watch: { ? ? isClick(){ ? ? ? if(this.isClick == false) { ? ? ? ? setTimeout(() => { ? ? ? ? ? this.$refs.input.focus() ? ? ? ? }, 100); ?? ??? ?// this.$nextTick(() => { ? ? ? ? // ? this.$refs.input.focus() ? ? ? ? // }); ? ? ? } ? ? } ? }
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vue.js 解決v-model讓select默認選中不生效的問題
這篇文章主要介紹了vue.js 解決v-model讓select默認選中不生效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07vue項目webpack中Npm傳遞參數(shù)配置不同域名接口
這篇文章主要介紹了vue項目webpack中Npm傳遞參數(shù)配置不同域名接口,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06VUE+node(express)實現(xiàn)前后端分離
在本篇文章里小編給大家分享的是關于VUE+node(express)前后端分離實例內容,有需要的朋友們參考下。2019-10-10詳解vue父子組件關于模態(tài)框狀態(tài)的綁定方案
這篇文章主要介紹了詳解vue父子組件關于模態(tài)框狀態(tài)的綁定方案,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-06-06