账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    富文本编辑器带有标签文字,限制字数后多余文字截断的问题
    47
    0

    目前在用编辑器simditor,现在的一个需求是要给这个编辑器加一个字数限制。
    能实时获取到当前编辑器内的value,例如:

    <p style="font-size=14px">123456</p>

    假如我限制五个字数的话,截断之后应为:

    <p style="font-size=14px">12345</p>

    统计字数很简单,只需要过滤掉标签,然后看过滤后的文本的长度就可以了。
    但是在截断带有标签文本就犯难了,我该怎样准确又快捷的找到应该截断的位置呢?

    曾经想到过一种取捷径的方法。就是在每次编辑器内值改变的时候(onValueChange)与改变之前的值(currentValue)进行对比,如果有更改之后,就进行正则去掉标签计算长度,若超过长度则将原来的值(currentValue)重新赋值给编辑器。

    但是这个捷径在后来遇到了很多坑…… 首先他如果粘贴文字到超过限制字数的话,这段文字是粘不上的。我目前已经没有除了截取对应位置之后文字之外其他的方法。恳请各位大佬帮帮忙

        var editorValue = editor.getValue();
        var actualText_num = editorValue.replace(/<\/?[^>]*>/g,'').replace(/[ | ]*\n/g,'\n').replace(/\n[\s| | ]*\r/g,'\n').replace(/&nbsp;/ig,'').length;
    
        editor.on('valuechanged', function(e, type) {
          var tmp_editorValue = editor.getValue();
          
          if(tmp_editorValue === editorValue){
            return;
          }
    
          var tmp_actualText = tmp_editorValue.replace(/<\/?[^>]*>/g,'').replace(/[ | ]*\n/g,'\n').replace(/\n[\s| | ]*\r/g,'\n').replace(/&nbsp;/ig,'');
    
          if(tmp_actualText.length > 50 && tmp_actualText.length >= actualText_num ){
            editor.setValue(editorValue);
            editor.focus();
          }else{
            editorValue = tmp_editorValue;
            actualText_num = tmp_actualText.length;
          }

    …… 按照一楼的提示我查了一下uEditor的maximumWords,发现在官网的演示上,他只是在右下角提示了字数统计,在超过限制的时候给了一个警告…… 并没有截断这个操作。再次陷入尴尬

    Here is the code.

    1
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 不读书的书虫 普通会员 1楼

      富文本编辑器通常都会有一些文字长度限制,如果超过了这个限制,富文本编辑器会自动截断多余的文字。

      这可能是因为富文本编辑器在处理文本时,需要计算出每个单词的长度和字数,如果超过限制,就需要截断多余的文本。另外,富文本编辑器在处理文本时,可能会有格式化的功能,比如添加粗体、斜体等,如果超过了限制,就需要截断多余的文本。

      如果你想要更精细地控制富文本编辑器的字数限制,你可以尝试调整富文本编辑器的配置文件,或者使用一些专门的文本编辑器扩展来实现你的需求。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部