Я пытаюсь понять, как я могу проверить контент из редактора, например, убедившись, что контент имеет длину не менее 200 символов. Обычно с обычным текстовым полем я могу получить значение и проверить его оттуда. Насколько я понимаю, с этим не все так просто.
Как мне проверить контент из редактора CKEditor 5?
Ответы (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
как бы вы ограничили счет примерно 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
Вопрос касался CKEditor 5, а ваш ответ - о CKEditor 4. Кроме того, это даст вам не количество символов, а длину данных HTML (включая теги
<p>
и т. Д.)
- person Reinmar; 22.05.2018