如何检查富文本编辑器内容是否为空?

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

我有一个包含帖子的博客。我还有一个富文本编辑器(Quill)。

是否可以检查富文本编辑器是否有空内容?

我使用 Quill(与 React、Express JS、MongoDB),我想以某种方式 防止在数据库中存储空值。

问题是,如果我在编辑器中添加空格,

Quill
将生成空段落。所以没有内容只有空段落。使用普通输入字段,我可以检查空字符串,但如果我有富文本编辑器怎么办?

问题:

<p>                     </p>

甚至更糟

<p>                            </p><p><br></p><p><br></p><p>       </p>

我真的不想将其保存到数据库中。因为我不想有空帖子。我该如何解决这个问题?可以以某种方式检查空段落的解决方案吗?...但是

<br>
标签呢?

请打开此代码和框,然后输入一堆空格,然后单击按钮。打开控制台,您将看到编辑器的输出。

codesandbox:https://dxqhq.codesandbox.io/

非常感谢

javascript reactjs express rich-text-editor quill
4个回答
6
投票

据我了解,您只想仅在包含文本时保存用户输入 所以你必须从 HTML 中清理用户输入,然后检查输出长度

var regex = /(<([^>]+)>)/ig
body = "<p>test</p>"
hasText = !!body.replace(regex, "").length;
if(hasText) save()

4
投票

您可以仅通过迭代对象的 ops 属性并检查每个操作的

insert
值来检查
QuillJS delta 对象
是否为空或是否有空格。如果所有
insert
值都是空格字符或
ops
数组为空,则 delta 对象被视为空或仅包含空格。

这是检查 delta 对象是否为空或仅包含空格的函数:

isDeltaEmptyOrWhitespace(delta) {
    if (delta.ops.length === 0) {
        return true;
    }
    for (let i = 0; i < delta.ops.length; i++) {
        if (delta.ops[i].insert.trim() !== '') {
            return false;
        }
    }
    return true;
}

我希望这有帮助。


2
投票

这对我有用,所以它不会逃避图像。

function isQuillEmpty(value: string) {
   if (value.replace(/<(.|\n)*?>/g, '').trim().length === 0 && !value.includes("<img")) {
      return true;
    }
      return false;
    }

0
投票
    const handleSubmit = () => {
    const isEditorEmpty = editorData?.replace(/<\/?[^>]+(>|$)/g, "").trim() === '';

    if (isEditorEmpty) {
        Alert.alert("Post", "Please add content and image or video for post")
        return
    }

    console.log("Editor data", editorData);
}
© www.soinside.com 2019 - 2024. All rights reserved.