vue3实现对textarea组件光标聚焦

技术 · 02-20 · 访问: 717 次

在写个人小demo时需要使用到一种效果就是一开始为 input 框,当用户点击时变化为 textarea 并光标能够进行聚焦。

通过 ref 来获取 textarea 组件,并使用 focus() 事件来对文本框进行光标的聚焦。

<template>
  <NInput v-model:value="desc" v-if="!isFocusDesc" @focus="handleFocusDesc"/>
  <NInput v-model:value="desc" type="textarea" v-else ref="textarea" @blur="isFocusDesc = false"/>
</template>
<script setup>
import {ref, nextTick} from 'vue'
import {NInput} from 'naive-ui'

let desc = ref('')
let isFocusDesc = ref(false)
// 获取textarea组件
let textarea = ref()

function handleFocusDesc(){
  isFocusDesc.value = true
  nextTick(() => {
    // 对 textarea 组件进行光标聚焦
    textarea.value.focus()
  })
}
</script>
前端 vue
icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif
Theme Jasmine by Kent Liao