Как я могу проверить, пусто ли поле редактора CK?

Я хочу проверить, пусто ли поле CKEditor (Rich Text) как часть некоторой бизнес-логики. Я не хочу использовать встроенные функции проверки.

Если в поле CK Editor ранее был текст, а затем этот текст удаляется, содержимое все еще остается, например.

<p dir="ltr">
 &nbsp;</p>

Я могу получить дескриптор этой текстовой строки, используя:

dataVar = xspdoc.getDocument().getMIMEEntity(dataNamevar).getContentAsText();

Есть ли способ проверить, пусто ли поле CKEditor для видимого текста?


person Sean Cull    schedule 10.03.2012    source источник


Ответы (5)


С технической точки зрения, если в нем есть одна видимая новая строка, как вы показали в своем вопросе, на самом деле это не «пусто».

На самом деле вам придется проанализировать значение содержимого, чтобы выяснить, есть ли содержимое, которое не находится внутри тегов или нескольких специальных символов, таких как и т. д.

Я обычно делаю это в js, если мне нужно, беря всю строку текста и разбивая ее на массив на основе «‹», затем беря каждый элемент массива и удаляя текст слева от «>» , затем обрезать. Это оставляет мне массив либо пустых строк, либо текста, который находится вне каких-либо тегов. Оттуда достаточно легко проверить любую из строк в массиве, чтобы увидеть, не являются ли они пустыми, а не " ".

Это может быть более громоздко, чем некоторые встроенные парсеры, о которых я не знаю, но это довольно надежно и быстро. (и очень похожий метод можно использовать и на языке формул).

В формуле ssjs вы можете:

var checkString = @trim(@replacesubstring(@implode( @trim (@right( @explode( sourceHTMLstring , "<" ) , ">" ) ) , " "), "&nbsp;" , ""));

if(checkstring == "") {
        //  *** You have no content 
} else {
        // ***  you have content
}

Очевидно, это можно было бы сделать так же легко и в чистом javascript, но старый язык формул настолько укоренился в моей голове, что я бы пошел по этому пути просто по привычке.

** Также обратите внимание: вы можете проверить наличие тега ‹img> где-то там на случай, если кто-то не сделал абсолютно ничего, кроме как поместил изображение в форматированный текст.

person Andrew Pollack    schedule 11.03.2012
comment
Привет, Эндрю, я надеялся, что, как вы сказали, будет что-то еще встроенное, но, похоже, нет. Спасибо за вашу помощь. - person Sean Cull; 24.04.2012

У CKEditor есть собственный API, я думаю, это правильный метод: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#getData

person Martin Jinoch    schedule 10.03.2012
comment
Похоже, что он также будет иметь разметку. Данные будут в необработанном формате. Я также идеально ищу что-то SSJS - person Sean Cull; 11.03.2012

Это может быть полезно: http://xpagetips.blogspot.com/2011/10/be-careful-with-empty-ckeditor-rich.html

person Russell Maher    schedule 11.03.2012
comment
Привет, Рассел, я видел это в поисках решения до публикации вопроса. Это именно то, что мы видели, но это не решает проблему обнаружения того, что редактор пуст после удаления текста. Шон - person Sean Cull; 11.03.2012

Проверьте, не пуст ли CKEditor.

Для любого браузера var editor=CKEDITOR.instances.editorName.getData();

person Aashish Garg    schedule 02.04.2015

Я нашел лучший ответ для этого

function validateCKEDITORforBlank(ckData)
{
   ckData = ckData.replace(/<[^>]*>|\s/g, '');
   var vArray = new Array();
   vArray = ckData.split("&nbsp;");
   var vFlag = 0;
   for(var i=0;i<vArray.length;i++)
   {
       if(vArray[i] == '' || vArray[i] == "")
       {
          continue;
       }
       else
       {
           vFlag = 1;
           break;
       }
    }
    if(vFlag == 0)
    {
       return true;
    }
    else
    {
       return false;
    }
}

Ссылка< /а>

person Azad    schedule 09.10.2015