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

问题描述 投票:0回答:6

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

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

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

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

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

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

xpages
6个回答
2
投票

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

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

我倾向于在js中执行此操作,如果必须的话,通过获取整个文本字符串并将其拆分为基于“<" then taking each element of the array and removing an text to the left of an ">”的数组,然后修剪。 这给我留下了一个空字符串或任何标签之外的文本的数组。 从那里可以很容易地检查数组中的任何字符串,看看它们是否不为空,而不是“ ”。

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

在 ssjs 公式中你可以:

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

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

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

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


1
投票

我找到了最佳答案

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

链接


0
投票

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



0
投票

检查CKEditor是否为空

适用于任何浏览器

var editor=CKEDITOR.instances.editorName.getData();


0
投票
let fieldValue = "<p> &nbsp;&nbsp;&nbsp;</p>";

if (this.isEditorContentEmpty(listOfMachinery)) {
    console.log("Editor content is empty or contains only non-visible characters.");
    alert("Please enter meaningful content into the editor.");
} else {
    console.log("Editor content is valid.");
    // Proceed with your form submission or other logic here
}


 // Function to check if input field value is empty or contains only non-visible characters
 isEditorContentEmpty(editorInstance) {
    // Get the value from function parameter
    var editorContent = editorInstance;

    // Regular expression to remove tags and non-visible characters
    var cleanedContent = editorContent
        .replace(/<[^>]+>/g, '')   // Remove HTML tags
        .replace(/&nbsp;/g, '')    // Remove &nbsp;
        .replace(/\s/g, '');       // Remove all whitespace characters (spaces, tabs, newlines)

    // Check if the cleaned content is empty
    return cleanedContent === '';
}
© www.soinside.com 2019 - 2024. All rights reserved.