You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

未编辑内容时如何从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:52:17