如何测试CK编辑器字段是否为空

时间:2012-03-10 16:42:15

标签: xpages

我想测试CKEditor(Rich Text)字段是否为空,作为某些业务逻辑的一部分。 我不想使用内置的验证功能。

如果CK编辑器字段之前有文本,然后删除此文本,则仍有内容,例如

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

我可以使用以下方法获取此文本字符串的句柄:

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

有没有办法测试CKEditor字段是否没有可见文本?

5 个答案:

答案 0 :(得分:2)

从技术上讲,如果它在你的问题中显示的内容中只有一条可见的换行符,则它并非真正“空”。

实际上,您必须解析内容值,以确定是否有内容不是内部标记或少数特殊字符等等。

我倾向于在js中执行此操作,如果必须,通过获取整个文本字符串并将其拆分为基于“&lt;”的数组然后获取数组的每个元素并删除“&gt;”左侧的文本,然后修剪。这留下了一个空字符串或文本在任何标签之外的数组。从那里可以很容易地检查数组中的任何字符串,看它们是否为空,而不是“”。

这可能比我不知道的一些内置解析器更麻烦,但它相当可靠和快速。 (也可以在公式语言中使用非常类似的方法。)

在ssjs公式中你可以:

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

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

显然,这可以在纯粹的javascript中轻松完成,但旧的公式语言在我的脑海中根深蒂固,我只是出于习惯这样做。

**另请注意:您可能需要检查&lt; img&gt;在那里标记以防万一除了将图像放在富文本中之外什么都没做。

答案 1 :(得分:0)

CKEditor有自己的API,我想这是正确的使用方法: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#getData

答案 2 :(得分:0)

答案 3 :(得分:0)

检查CKEditor是否为空

对于任何浏览器 var editor=CKEDITOR.instances.editorName.getData();

答案 4 :(得分:0)

我找到了最佳答案

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;
    }
}

Link