基于 ant-design-vue 中使用 a-textarea 时阻止默认行为

在Vue3项目中使用ant-design-vue的a-textarea组件时,遇到按下回车发送信息并清空输入框后,文本框仍会换行的问题。原因是textarea的默认换行行为。解决方法是通过添加.prevent修饰符阻止默认行为,然后使用setTimeout清空inputInfo,以避免立即清空导致的换行。推荐使用event.preventDefault()来阻止默认的回车换行操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于 vue3 + ant-design-vue 中使用 a-textarea 踩坑

问题背景

​ 最近在开发项目时,需要实现一个类似客服的对话框,在输入框中输入信息点击回车后发送,发送完毕后清空文本框使文本框显示设置的placeholder,但是每次按下回车后文本框内容清空,却会触发换行,导致不能显示placeholder信息。如下图:
默认不输入文字时
输入文字时
按下回车后

问题原因

按下回车换行,这是 textarea 具备的默认行为,所以当你按下回车触发 a-textarea 的 pressEnter 事件时,同样触发了 textarea 的默认换行行为。

解决办法

  1. 阻止 textarea 的默认行为,通过 event.preventDefault(),在vue3中就是使用.preventz修饰符。

    <a-textarea :placeholder="$t('skill-manager.please-input-dialogue-content')"
    	v-model:value="inputInfo" class="dialogue-input" @pressEnter.prevent="sendInfo()"></a-textarea>
    
  2. 在触发 textarea 默认行为后,再去将 textarea 内容清空,也就是设置一个延时。

    setTimeout(() => {
        this.inputInfo = '';
    }, 0);
    

    个人推荐使用 event.preventDefault()

    按下回车后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值