Как считать каждый пробел как символ? - PullRequest
0 голосов
/ 02 мая 2018

Работаю с CK-Editor и разрешаю пользователям вставлять в него символы. Я не считаю теги HTML символом (я просто игнорирую теги HTML), и если пользователь вводит пробел, я считаю его символом single . Наконец, я только , позволяя пользователям вводить до 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 голосов
/ 02 мая 2018

Попробуйте плагин wordcount. https://ckeditor.com/cke4/addon/wordcount И на config.js в папке ckeditor, используйте это для настройки 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;
                    }
                }
            }
        })
    };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...