div实现文本域,其中空行被innerText转成多个换行符\n问题

<div
ref="contentRichText"
class="send-content"
contenteditable="true"
placeholder="请输入"
@paste="handlePaste"
@input="handleInput"
></div>

在项目中用div实现了一个简单的文本域,如上。发现了一个坑,输入的内容,实际是在input函数handleInput中通过innerText获取的(如下)

// 输入内容检测字符数
handleInput(e) {
    // innerText获取文本域中内容
    this.smsContent = e.target.innerText;

    // 检测字符数
},

在文本域中敲回车输入一个空行时,innerText获取到的字符串比实际的要多出来一个\n换行符,导致控制台打印输出的内容,比实际在文本域中显示的内容多出来一个空行,如下图

根据上面的图,实际只敲了两下回车,但是innerText有3个\n换行符,且每多一个空行就会多一个换行符,导致实际获取到的内容比文本域显示的内容多出来很多空行,如下

这可能和innerText的识别转换机制有关,查阅了很久也没有找到具体的原因是啥,因为项目实际需求需要统计字符数量,所以这里导致统计不准确,而且空行越多越不准确,最后想到了一个解决方法:既然每多一空行,innerText就会多出来一个\n(识别出两个\n),那只需要在获取内容时,将所有的"\n\n"替换成"\n"就可以了,代码如下:

// 输入内容是检测字符数
handleInput(e) {
    // innerText会将空行转成多个\n,特殊处理
    this.smsContent = e.target.innerText.replaceAll("\n\n", "\n");

    //统计字符数方法
    this.sumary()
},

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值