未编辑内容时如何从Summernote表单获取正确HTML
如何从未编辑的Summernote表单获取正确HTML?
我之前也碰到过一模一样的问题!当你初始化Summernote编辑器后,哪怕完全没编辑内容,直接调用summernote('code')拿到的往往是编辑器默认生成的空段落结构(
方法1:过滤默认空内容(最稳妥)
直接获取内容后,判断是否是Summernote的默认空结构,匹配到就返回空字符串,否则返回实际HTML:
// 替换成你的编辑器ID function getEditorContent() { const editorContent = $('#summernote-editor').summernote('code'); // 匹配Summernote默认的空内容正则 const emptyDefault = /^<p><br><\/p>$/i; return emptyDefault.test(editorContent) ? '' : editorContent; }
这个方法兼容性最好,不管你用的是lite版还是完整版,只要是0.8.x及以上版本都能生效,完美区分"未编辑的默认空"和"用户手动输入的空段落"。
方法2:初始化时清空默认结构
如果你希望编辑器从一开始就是完全空的状态(连默认空标签都没有),可以在初始化时通过回调函数手动清空:
$('#summernote-editor').summernote({ placeholder: '请输入内容...', callbacks: { onInit: function() { // 初始化后立即设置内容为空 $(this).summernote('code', ''); } } });
这样之后你直接调用$('#summernote-editor').summernote('code'),未编辑时就会返回空字符串,完全符合你的需求。
方法3:使用内置的isEmpty方法(版本要求≥0.8.9)
Summernote 0.8.9及以上版本支持isEmpty方法,它会自动识别编辑器是否为"真正的空"(包括默认空结构、纯空格、换行等):
const editor = $('#summernote-editor'); const finalContent = editor.summernote('isEmpty') ? '' : editor.summernote('code');
这个方法最简洁,但要注意版本兼容性,如果你用的是更早的版本,这个方法可能不存在。
小提示:如果你的业务需要保留用户手动输入的空段落(比如用户特意换行),方法1的正则可以调整为只匹配初始化时的默认结构,避免误过滤用户的合法输入。
内容的提问来源于stack exchange,提问作者Doaa Radwan
相关产品推荐
相关产品推荐

