我有一个包含帖子的博客。我还有一个富文本编辑器(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/
非常感谢
据我了解,您只想仅在包含文本时保存用户输入 所以你必须从 HTML 中清理用户输入,然后检查输出长度
var regex = /(<([^>]+)>)/ig
body = "<p>test</p>"
hasText = !!body.replace(regex, "").length;
if(hasText) save()
您可以仅通过迭代对象的 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;
}
我希望这有帮助。
这对我有用,所以它不会逃避图像。
function isQuillEmpty(value: string) {
if (value.replace(/<(.|\n)*?>/g, '').trim().length === 0 && !value.includes("<img")) {
return true;
}
return false;
}
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);
}