项目场景:
使用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(); // 提交方法 } }, }