el-input发送消息空格、换行问题

在Vue.js构建的聊天室应用中,遇到输入消息时多个空格被合并及Ctrl+Enter无法换行的问题。通过添加CSS样式`word-wrap:break-word;white-space:pre-wrap;`解决了多空格显示问题,同时在input框的keydown事件中处理Ctrl+Enter组合键,实现文本换行并发送消息的功能。
摘要由CSDN通过智能技术生成

项目场景:

使用input自定义聊天室发送消息


问题描述

消息中包含多个空格发送后,页面上都解析成了一个空格,ctrl+enter键却发送了消息不换行


解决方案:

1、解决多个空格渲染成一个:在展示消息列表的页面给消息添加css样式

word-wrap: break-word;
white-space: pre-wrap;

2、解决换行问题:input框添加事件

@keydown.enter.native.prevent

// 文字输入框
<el-input
        type="textarea"
        placeholder="请输入消息"
        :autosize="false"
        resize="none"
        :value="msg"
        @input="(e) => (msg = msgHandle(e))"
        @blur="(e) => (msg = msgHandle(e.target.value))"
        @keydown.enter.native.prevent="inputKeydown($event)"
        clearable
  />

 // 发送按钮
 <el-button size="small" type="primary" @click="send">发送</el-button>


data () {
return {
    msg:''
 }
}

// 方法
methods:{
  inputKeydown(e) {
    if (e.ctrlKey) {
     // 换行
     const { selectionStart, selectionEnd } = e.target;
     const chars = this.msg.split("");
     chars.splice(selectionStart, selectionEnd - selectionStart, "\n");
        this.msg = chars.join("");
      } else {
        this.send(); // 提交方法
      }
    },
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值