Как мне проверить контент из редактора CKEditor 5?

Я пытаюсь понять, как я могу проверить контент из редактора, например, убедившись, что контент имеет длину не менее 200 символов. Обычно с обычным текстовым полем я могу получить значение и проверить его оттуда. Насколько я понимаю, с этим не все так просто.


person Hayden    schedule 20.05.2018    source источник


Ответы (2)


Я написал простую функцию, которая позволяет посчитать, сколько символов вставлено в документ.

/**
 * Returns length of the text inserted to the specified document.
 *
 * @param {module:engine/model/document~Document} document
 * @returns {Number}
 */
function countCharacters( document ) {
    const rootElement = document.getRoot();

    return countCharactersInElement( rootElement );

    // Returns length of the text in specified `node`
    //
    // @param {module:engine/model/node~Node} node
    // @returns {Number}
    function countCharactersInElement( node ) {
        let chars = 0;

        for ( const child of node.getChildren() ) {
            if ( child.is( 'text' ) ) {
                chars += child.data.length;
            } else if ( child.is( 'element' ) ) {
                chars += countCharactersInElement( child );
            }
        }

        return chars;
    }
}

Вы можете проверить, как это работает, здесь - https://jsfiddle.net/pomek/kb2mv1fr/.

person pomek    schedule 22.05.2018
comment
как бы вы ограничили счет примерно 20 словами? - person rob.m; 29.05.2019

CKeditor имеет собственную встроенную функцию для получения данных в текстовом редакторе:

textbox_data = CKEDITOR.instances.mytextbox.getData();//mytextbox is id of textarea 

Тогда вы могли бы просто использовать свойство length строкового объекта:

alert(str.length);
person Kevin Yan    schedule 21.05.2018
comment
Вопрос касался CKEditor 5, а ваш ответ - о CKEditor 4. Кроме того, это даст вам не количество символов, а длину данных HTML (включая теги <p> и т. Д.) - person Reinmar; 22.05.2018