亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Vue輸入框狀態(tài)切換&自動(dòng)獲取輸入框焦點(diǎn)的實(shí)現(xiàn)方法

 更新時(shí)間:2023年05月30日 10:54:50   作者:名字都沒(méi)了~  
這篇文章主要介紹了Vue輸入框狀態(tài)切換&自動(dòng)獲取輸入框焦點(diǎn)的實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

場(chǎng)景:

點(diǎn)擊button按鈕展示輸入框,并自動(dòng)獲取對(duì)話框焦點(diǎn),失去焦點(diǎn)時(shí)展示button按鈕

實(shí)現(xiàn):

1.點(diǎn)擊button按鈕展示輸入框,失去焦點(diǎn)時(shí)展示button按鈕

  • 在data中定義visibility,確定輸入框的展示狀態(tài),默認(rèn)為false
  • 定義changeVisibility方法,并給button綁定點(diǎn)擊事件@click="changeVisibility",實(shí)現(xiàn)點(diǎn)擊按鈕展示輸入框,給輸入框綁定失去焦點(diǎn)事件@blur="changeVisibility"
  • 定義inputbutton元素,綁定條件渲染指令v-if,當(dāng)visibilityfalse時(shí)展示按鈕,反之展示輸入框

代碼實(shí)現(xiàn):

<template>
	<div>
        <label for="input">
            <input type="text" ref="inputRef" v-if="visibility" @blur="changeVisibility">
            <button @click="changeVisibility" v-else>展示文本框</button>
    	</label>
    </div>
</template>
<script>
	export default {
        data() {
            return {
                visibility: false
            }
        },
        methods: {
            changeVisibility() {
                this.visibility = !this.visibility // 切換 visibility,控制輸入框的顯示狀態(tài)
            }
        }
    }
</script>

2.自動(dòng)獲取對(duì)話框焦點(diǎn)

文本框的焦點(diǎn)可以通過(guò).focus()獲取,因此我們可以通過(guò)this.$refs.inputRef.focus()獲取到顯示的輸入框的焦點(diǎn)(inputRef是創(chuàng)建文本框時(shí)添加的ref引用)。但是方法定義在組件渲染之前,因此直接在方法中添加會(huì)導(dǎo)致控制臺(tái)報(bào)錯(cuò):Error in v-on handler: "TypeError: Cannot read properties of undefined (reading 'focus')"。這是由于瀏覽器執(zhí)行到this.$refs.inputRef.focus()

時(shí),input元素還沒(méi)有被渲染到頁(yè)面上,此時(shí)DOM中還不存在指定的input元素。為了避免這種情況,可以使用以下三種方法推遲焦點(diǎn)的獲取

  • 設(shè)置定時(shí)器, 推遲焦點(diǎn)的獲取
setTimeout(()=> {
    this.$refs.inputRef.focus()
},0)

設(shè)置一個(gè)0ms的定時(shí)器,當(dāng)瀏覽器執(zhí)行到定時(shí)器時(shí),會(huì)將定時(shí)器內(nèi)部的函數(shù)放入延遲隊(duì)列中,當(dāng)定時(shí)器的等待事件結(jié)束后,會(huì)將函數(shù)放入消息隊(duì)列的末尾,消息隊(duì)列的執(zhí)行按照先進(jìn)先出原則,當(dāng)前面的任務(wù)執(zhí)行完成后,瀏覽器會(huì)自動(dòng)執(zhí)行this.$refs.inputRef.focus()實(shí)現(xiàn)焦點(diǎn)的獲取

  • 使用 $nextTick 方法, 將獲取焦點(diǎn)推遲到下一個(gè) DOM 更新周期
this.$nextTick(()=> {
	this.$refs.inputRef.focus()
})

組件的$nextTick(cb)方法,會(huì)把 cb 回調(diào)推遲到下一個(gè) DOM 更新周期之后執(zhí)行。

通俗的理解是:等組件的 DOM 更新完成之后,再執(zhí)行 cb 回調(diào)函數(shù)。從而能保證 cb 回調(diào)函數(shù)可以操作到最新的 DOM 元素。

將獲取焦點(diǎn)放到updated生命周期中執(zhí)行(不推薦
使用這個(gè)方法時(shí),需要加上if判斷,否則每一次this.visibility發(fā)生變化時(shí),都會(huì)執(zhí)行一次更新,增加服務(wù)器的負(fù)擔(dān)

updated() {
    if (this.visibility){
        this.$refs.inputRef.focus()
    }
}

當(dāng)組件處于updated時(shí),頁(yè)面已經(jīng)根據(jù)最新的數(shù)據(jù)渲染完成了,此時(shí)我們執(zhí)行this.$refs.inputRef.focus()就可以正常獲取輸入框的焦點(diǎn)

到此這篇關(guān)于Vue輸入框狀態(tài)切換&amp;自動(dòng)獲取輸入框焦點(diǎn)の實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Vue動(dòng)獲取輸入框焦點(diǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Element實(shí)現(xiàn)表格表頭添加搜索圖標(biāo)和功能

    使用Element實(shí)現(xiàn)表格表頭添加搜索圖標(biāo)和功能

    這篇文章主要介紹了使用Element實(shí)現(xiàn)表格表頭添加搜索圖標(biāo)和功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Elementui按鈕設(shè)置默認(rèn)選中狀態(tài)的實(shí)現(xiàn)過(guò)程

    Elementui按鈕設(shè)置默認(rèn)選中狀態(tài)的實(shí)現(xiàn)過(guò)程

    這篇文章主要給大家介紹了關(guān)于Elementui按鈕設(shè)置默認(rèn)選中狀態(tài)的實(shí)現(xiàn)過(guò)程,文中通過(guò)圖文以及示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Elementui具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-07-07
  • vue使用Axios做ajax請(qǐng)求詳解

    vue使用Axios做ajax請(qǐng)求詳解

    本篇文章主要介紹了vue使用Axios做ajax請(qǐng)求詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • Vue 監(jiān)聽(tīng)元素前后變化值實(shí)例

    Vue 監(jiān)聽(tīng)元素前后變化值實(shí)例

    這篇文章主要介紹了Vue 監(jiān)聽(tīng)元素前后變化值實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • Vue-cli proxyTable 解決開(kāi)發(fā)環(huán)境的跨域問(wèn)題詳解

    Vue-cli proxyTable 解決開(kāi)發(fā)環(huán)境的跨域問(wèn)題詳解

    本篇文章主要介紹了Vue-cli proxyTable 解決開(kāi)發(fā)環(huán)境的跨域問(wèn)題詳解,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-05-05
  • vue實(shí)現(xiàn)父子組件雙向綁定的方法總結(jié)

    vue實(shí)現(xiàn)父子組件雙向綁定的方法總結(jié)

    Vue.js 是一種流行的 JavaScript 框架,它提供了一種簡(jiǎn)單且高效的方式來(lái)構(gòu)建用戶界面,在 Vue 中,父子組件之間的雙向綁定是一種常見(jiàn)的需求,下面我們就來(lái)學(xué)習(xí)一下vue中父子組件雙向綁定的常用方法吧
    2023-10-10
  • vue 1.x 交互實(shí)現(xiàn)仿百度下拉列表示例

    vue 1.x 交互實(shí)現(xiàn)仿百度下拉列表示例

    本篇文章主要介紹了vue 1.x 交互實(shí)現(xiàn)仿百度下拉列表示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • Vue3使用hooks解決字典數(shù)據(jù)的顯示問(wèn)題

    Vue3使用hooks解決字典數(shù)據(jù)的顯示問(wèn)題

    我們?cè)谑褂?nbsp;element-plus的時(shí)候,經(jīng)常會(huì)使用一些字典數(shù)據(jù), 在搜索框的時(shí)候,字典數(shù)數(shù)要使用 el-select el-option 來(lái)顯示,但是經(jīng)常會(huì)遇到字典數(shù)據(jù)的顯示問(wèn)題,所以本文給大家介紹了Vue3使用hooks解決字典數(shù)據(jù)的顯示問(wèn)題,需要的朋友可以參考下
    2024-12-12
  • 解決vue-cli 配置資源引用的絕對(duì)路徑問(wèn)題

    解決vue-cli 配置資源引用的絕對(duì)路徑問(wèn)題

    這篇文章主要介紹了vue-cli 配置資源引用的絕對(duì)路徑的問(wèn)題,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • 基于vue-cli3+typescript的tsx開(kāi)發(fā)模板搭建過(guò)程分享

    基于vue-cli3+typescript的tsx開(kāi)發(fā)模板搭建過(guò)程分享

    這篇文章主要介紹了搭建基于vue-cli3+typescript的tsx開(kāi)發(fā)模板,本文通過(guò)實(shí)例代碼截圖的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02

最新評(píng)論