代码之家  ›  专栏  ›  技术社区  ›  HenryDev

如何在编辑器中粘贴文本时仅显示几个字符?

  •  -1
  • HenryDev  · 技术社区  · 8 年前

    正在尝试 粘贴 字符,如果超过50个字符 仅显示前50个字符 有人能告诉我我错过了什么吗?

    这是我的代码: LIVE DEMO

    CKEDITOR.instances.foo.on('paste',function(event){
    
        alert('paste');
        var deleteKey = 46;
        var backspaceKey = 8;
        var keyCode = event.data.keyCode;
        if (keyCode === deleteKey || keyCode === backspaceKey)
            return true;
        else
        {
            var textLimit = 50;
            var str = CKEDITOR.instances.foo.getData();
            if (str.length >= textLimit)
            // Need to add code here to only show the first 50 characters
                return false;
        }
    });
    
    3 回复  |  直到 8 年前
        1
  •  3
  •   Praveen Kumar    8 年前

    您可以使用 WORDCOUNT 的插件 CKEditor 你可以找到一个例子

    https://ckeditor.com/cke4/addon/wordcount

        2
  •  0
  •   Tan Duong    8 年前

    你可以用这个 event.data.dataValue 从CKEditor获取和设置数据

    CKEDITOR.instances.foo.on('paste',function(event){
      var textLimit = 50;
      var str = $(event.data.dataValue).text();
    
       if (str.length >= textLimit) {
        event.data.dataValue = str.substr(0 , textLimit);
      } 
    });
    

    http://jsfiddle.net/2ftroyuv/7/

        3
  •  0
  •   vitamin-e    8 年前
    the document show about paste event.
    

    https://docs.ckeditor.com/ckeditor4/latest/guide/dev_clipboard.html#the-paste-event

    you could use event.data.dataValue to get the paste content.
    code is here:
    

    http://jsfiddle.net/2vzkLb8L/2/

    CKEDITOR.instances.foo.on('paste',function(event){
        var pasteContent = event.data.dataValue;
        var str = CKEDITOR.instances.foo.getData();
        var textLimit = 50;
        var newcontent = pasteContent + str; 
        CKEDITOR.instances.foo.setData(newcontent.slice(0,50))
    });