const_wjm 2023-08-18 12:04 采纳率: 40%
浏览 7
已结题

为什么当点击这个botton的时候无法立即获取到textarea的焦点,换行之后没有字符没有保持垂直居中


 <textarea
      id="textarea"
        ref="textarea"
        v-model="message"
        v-focus
        class="input"
        @focus="onFocus"
        @blur="onBlur"
      ></textarea>
<button @click="edit(item)"></button>
const textarea = ref();
const edit = (item: any) => {
message.value = item.msg
  focus.value = false
  nextTick(() => {
    focus.value = true
      // if (textarea.value) {
      //   textarea.value.focus();
      // }
       const textarea = document.getElementById('textarea');
      if (textarea) {
        textarea.focus();
      }
  })
}

为什么当点击这个botton的时候无法立即获取到textarea的焦点?另外这个textarea多行文本框在换行之后没有字符没有保持垂直居中, 使用vertical-align:middle; overflow-y: auto;这两个属性都不行。要怎么做

img

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-18 15:05
    关注

    【以下回答由 GPT 生成】

    问题分析: 1. 点击按钮时无法立即让多行文本框获取焦点的原因可能是因为在点击按钮后,多行文本框的 focus 事件触发时机不正确。 2. 文本未垂直居中的原因可能是因为 CSS 样式设置不正确。

    解决方案: 1. 点击按钮时立即让多行文本框获取焦点,可以使用 @click 事件处理程序,并在其中调用 textarea.focus() 方法。不需要使用 nextTick() 来处理。 2. 文本垂直居中可以通过 CSS 样式来实现,设置 line-height 属性为多行文本框的高度,可以确保文本在元素中垂直居中。

    修改后的代码:

    <textarea
      id="textarea"
      ref="textarea"
      v-model="message"
      v-focus
      class="input"
      @focus="onFocus"
      @blur="onBlur"
      style="line-height: 1.5rem; vertical-align: middle; overflow-y: auto"
    ></textarea>
    <button @click="edit(item)"></button>
    
    // 在 Vue 组件中的方法
    methods: {
      edit(item) {
        this.message = item.msg;
        const textarea = document.getElementById('textarea');
        if (textarea) {
          textarea.focus();
        }
      }
    }
    

    这样修改后,点击按钮时多行文本框会立即获取焦点,并且换行后的文本会保持垂直居中。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月26日
  • 已采纳回答 9月18日
  • 创建了问题 8月18日

悬赏问题

  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,