如何将每个空格都算作一个角色?

时间:2018-05-02 03:44:17

标签: javascript ckeditor

使用CK-Editor,我允许用户在其中粘贴字符。我不会将HTML标记计为字符(我只是忽略HTML标记),如果用户输入空格,我将其视为单个字符。最后,我允许用户输入最多50个字符。

我的问题:

1)如果用户粘贴50个字符(包括空格),CK编辑器应计算每个空格,因为它是一个字符。

2)如果用户输入更多超过50个字符,则会显示一条警告消息(“您输入的字符不能超过50个”),并且只显示50个字符。 我试过了:
event.data.dataValue = str.substr(0 , textLimit);但它总是摆脱空格并将multiple spaces放在single space上。

3)如果用户粘贴9个字符6次。示例:用户粘贴9个字符,然后另外9个字符,然后另外9个字符,然后另一个9,然后另一个9,然后另外9个。一旦超过50个字符,用户应该收到一条警告消息(“您不能输入超过50个字符” ),但仍显示50个字符。有没有更好的方法来阻止用户粘贴超过50个字符?非常感谢提前!

这是我的代码: 现场演示:LIVE DEMO

CKEDITOR.instances.foo.on('paste',function(event){
 var textLimit = 50;
 var str = event.data.dataValue.replace(/<[^>]+>/g, '').replace(/&nbsp;/g, ' ');

 if (str.length >= textLimit) {
 event.data.dataValue = str.substr(0 , textLimit);
 } 
}); 

注意: - 我正在使用此网站计算角色 - https://www.lettercount.com/

  • 这是一张图片,展示了我如何计算空间:

enter image description here

1 个答案:

答案 0 :(得分:-1)

尝试使用wordcount插件。 https://ckeditor.com/cke4/addon/wordcount 在ckeditor文件夹中的config.js上,使用它来配置wordcount。

config.wordcount = {

        // Whether or not you want to show the Paragraphs Count
        showParagraphs: false,

        // Whether or not you want to show the Word Count
        showWordCount: false,

        // Whether or not you want to show the Char Count
        showCharCount: true,

        // Whether or not you want to count Spaces as Chars
        countSpacesAsChars: true,

        // Whether or not to include Html chars in the Char Count
        countHTML: false,

        // Maximum allowed Word Count, -1 is default for unlimited
        maxWordCount: -1,

        // Maximum allowed Char Count, -1 is default for unlimited
        maxCharCount: 100,

        // Add filter to add or remove element before counting (see CKEDITOR.htmlParser.filter), Default value : null (no filter)
        filter: new CKEDITOR.htmlParser.filter({
            elements: {
                div: function (element) {
                    if (element.attributes.class == 'mediaembed') {
                        return false;
                    }
                }
            }
        })
    };