【问题标题】:How can I test if a CK Editor field is empty如何测试 CK Editor 字段是否为空
【发布时间】:2012-03-10 16:42:15
【问题描述】:

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

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

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

我可以使用:

来处理这个文本字符串
dataVar = xspdoc.getDocument().getMIMEEntity(dataNamevar).getContentAsText();

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

【问题讨论】:

    标签: xpages


    【解决方案1】:

    从技术上讲,如果它具有相当于您在问题中显示的单个可见换行符的内容,则它并不是真正的“空”。

    实际上,您必须解析内容值以查明是否有内容不在标签内或少数特殊字符(如  等)。

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

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

    在 ssjs 公式中,您可以:

    var checkString = @trim(@replacesubstring(@implode( @trim (@right( @explode( sourceHTMLstring , "<" ) , ">" ) ) , " "), "&nbsp;" , ""));
    
    if(checkstring == "") {
            //  *** You have no content 
    } else {
            // ***  you have content
    }
    

    显然,这可以在纯 javascript 中轻松完成,但是旧的公式语言在我的脑海中根深蒂固,我会出于习惯而采用这种方式。

    ** 另请注意:您可能需要在某处检查 标记,以防有人除了将图像放入富文本中之外什么都没做。

    【讨论】:

    • 嗨,安德鲁,我希望像你所说的那样,会有更多“内置”的东西,但似乎没有。感谢您的帮助。
    【解决方案2】:

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

    【讨论】:

    • 它看起来好像也会有标记“数据将是原始格式”。我也理想地寻找 SSJS 的东西
    【解决方案3】:

    【讨论】:

    • 嗨,Russell,在发布问题之前,我在寻找解决方案时已经看到了这一点。这正是我们所看到的,但它没有解决如何在删除文本后检测编辑器为空的问题。肖恩
    【解决方案4】:

    检查CKEditor是否为空

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

    【讨论】:

      【解决方案5】:

      我找到了最佳答案

      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

      【讨论】:

        猜你喜欢
        • 2020-05-30
        • 1970-01-01
        • 1970-01-01
        • 2011-02-27
        • 2011-09-17
        • 2018-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多