最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue輸入框狀態(tài)切換&自動獲取輸入框焦點的實現(xiàn)方法

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

場景:

點擊button按鈕展示輸入框,并自動獲取對話框焦點,失去焦點時展示button按鈕

實現(xiàn):

1.點擊button按鈕展示輸入框,失去焦點時展示button按鈕

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

代碼實現(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.自動獲取對話框焦點

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

時,input元素還沒有被渲染到頁面上,此時DOM中還不存在指定的input元素。為了避免這種情況,可以使用以下三種方法推遲焦點的獲取

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

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

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

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

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

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

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

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

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

相關(guān)文章

  • 關(guān)于vue組件的更新機制?resize()?callResize()

    關(guān)于vue組件的更新機制?resize()?callResize()

    這篇文章主要介紹了關(guān)于vue組件的更新機制?resize()?callResize(),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue使用axios(Ajax)+ElementUI實現(xiàn)登錄實踐

    Vue使用axios(Ajax)+ElementUI實現(xiàn)登錄實踐

    本文介紹了如何使用Vue和ElementUI框架創(chuàng)建一個登錄頁面,并實現(xiàn)前后端交互,同時,還討論了跨域問題的解決方案以及ES6中的箭頭函數(shù)
    2026-03-03
  • Vue?element實現(xiàn)權(quán)限管理業(yè)務(wù)流程詳解

    Vue?element實現(xiàn)權(quán)限管理業(yè)務(wù)流程詳解

    目前本人再使用vue-element-admin項目時都是通過直接刪除一些用不上的路由來進行側(cè)邊欄的清除,但是其實有一個更加好的辦法來對項目的側(cè)邊欄顯示的內(nèi)用進行管理,就是權(quán)限管理,其實也不知道這個方法好不好,原理上來說時跟直接刪除該路由的方式時一樣的
    2022-08-08
  • vue中v-bind與v-model的區(qū)別舉例詳解

    vue中v-bind與v-model的區(qū)別舉例詳解

    這篇文章主要給大家介紹了關(guān)于vue中v-bind與v-model區(qū)別的相關(guān)資料,v-model和v-bind是Vue.js框架中的兩個常用指令,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-09-09
  • 解決vue ui報錯Couldn‘t parse bundle asset“C:\Users\Administrator\vue_project1\dist\js\about.js“. Analyzer

    解決vue ui報錯Couldn‘t parse bundle asset“C:

    這篇文章主要介紹了解決vue ui報錯Couldn‘t parse bundle asset“C:\Users\Administrator\vue_project1\dist\js\about.js“. Analyzer問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • vue組件屬性(props)及私有數(shù)據(jù)data解析

    vue組件屬性(props)及私有數(shù)據(jù)data解析

    這篇文章主要介紹了vue組件屬性(props)及私有數(shù)據(jù)data解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue--點擊當(dāng)前增加class,其他刪除class的方法

    vue--點擊當(dāng)前增加class,其他刪除class的方法

    今天小編就為大家分享一篇vue--點擊當(dāng)前增加class,其他刪除class的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 如何通過Vue自帶服務(wù)器實現(xiàn)Ajax請求跨域(vue-cli)

    如何通過Vue自帶服務(wù)器實現(xiàn)Ajax請求跨域(vue-cli)

    從A頁面訪問到B頁面,并且要獲取到B頁面上的數(shù)據(jù),而兩個頁面所在的端口、協(xié)議和域名中哪怕有一個不對等,那么這種行為就叫跨域,這篇文章給大家介紹如何通過Vue自帶服務(wù)器實現(xiàn)Ajax請求跨域(vue-cli),感興趣的朋友一起看看吧
    2023-10-10
  • 前端vue+element使用SM4國密加密解密的詳細實例

    前端vue+element使用SM4國密加密解密的詳細實例

    國密即國家密碼局認定的國產(chǎn)密碼算法,主要有SM1,SM2,SM3,SM4,下面這篇文章主要給大家介紹了關(guān)于前端vue+element使用SM4國密加密解密的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 解決element?ui?cascader?動態(tài)加載回顯問題

    解決element?ui?cascader?動態(tài)加載回顯問題

    這篇文章主要介紹了element?ui?cascader?動態(tài)加載回顯問題解決方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08

最新評論

扎兰屯市| 中阳县| 和龙市| 东至县| 五峰| 广西| 阿合奇县| 南阳市| 紫金县| 英山县| 烟台市| 武胜县| 庄浪县| 墨脱县| 峨山| 牟定县| 贡嘎县| 勐海县| 商河县| 洛宁县| 鄂托克前旗| 即墨市| 图片| 大理市| 进贤县| 芷江| 樟树市| 上虞市| 通渭县| 德清县| 水城县| 新建县| 绿春县| 梨树县| 揭阳市| 南宫市| 舟山市| 安龙县| 专栏| 永和县| 四平市|