我想测试 CKEditor(富文本)字段作为某些业务逻辑的一部分是否为空。 我不想使用内置的验证功能。
如果 CK 编辑器字段之前有文本,然后删除该文本,则仍然有内容,例如
<p dir="ltr">
</p>
我可以使用以下方法获取此文本字符串的句柄:
dataVar = xspdoc.getDocument().getMIMEEntity(dataNamevar).getContentAsText();
有没有办法测试 CKEditor 字段是否为空可见文本?
从技术上讲,如果它具有相当于您在问题中所示的单个可见换行符的内容,那么它并不是真正的“空”。
实际上,您必须解析内容值以找出是否有内容不在标签内或少数特殊字符(例如 等)。
我倾向于在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 , "<" ) , ">" ) ) , " "), " " , ""));
if(checkstring == "") {
// *** You have no content
} else {
// *** you have content
}
显然,这可以在纯 JavaScript 中轻松完成,但是旧的公式语言在我的脑海中根深蒂固,我会出于习惯而这样做。
** 另请注意:您可能需要检查某处是否有 标记,以防有人除了将图像放入富文本中之外什么也没做。
我找到了最佳答案
function validateCKEDITORforBlank(ckData)
{
ckData = ckData.replace(/<[^>]*>|\s/g, '');
var vArray = new Array();
vArray = ckData.split(" ");
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;
}
}
CKEditor 有自己的 API,我想这是正确的使用方法: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#getData
检查CKEditor是否为空
适用于任何浏览器
var editor=CKEDITOR.instances.editorName.getData();
let fieldValue = "<p> </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(/ /g, '') // Remove
.replace(/\s/g, ''); // Remove all whitespace characters (spaces, tabs, newlines)
// Check if the cleaned content is empty
return cleanedContent === '';
}