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

单页多CKEditor实例上传异常:仅一个编辑器显示上传标签

解决同一页面两个CKEditor编辑器仅一个显示上传按钮的问题

1. 修正批量初始化的选择器

你当前使用CKEDITOR.replaceAll('ckcreate'),但如果是通过class匹配编辑器元素,需要在选择器前加上.(表示class选择器),否则CKEditor只会匹配name或id为ckcreate的单个元素,导致第二个编辑器未被正确初始化。

步骤:

  • 确保两个编辑器的<textarea>都添加了相同的class:
<textarea class="ckcreate" name="content1"></textarea>
<textarea class="ckcreate" name="content2"></textarea>
  • 修改初始化脚本的选择器:
<script src="//cdn.ckeditor.com/4.6.2/standard/ckeditor.js"></script>

<script type="text/javascript">
CKEDITOR.replaceAll('.ckcreate', {
    filebrowserUploadUrl: "{{route('admin.berita.upload', ['_token' => csrf_token() ])}}",
    filebrowserUploadMethod: 'form'
});
</script>

2. 改用单独初始化(更稳妥)

如果批量初始化仍有问题,可以给每个编辑器设置唯一id,分别初始化,避免选择器冲突:

<textarea id="editor1" name="content1"></textarea>
<textarea id="editor2" name="content2"></textarea>
<script src="//cdn.ckeditor.com/4.6.2/standard/ckeditor.js"></script>

<script type="text/javascript">
// 定义通用配置
const ckConfig = {
    filebrowserUploadUrl: "{{route('admin.berita.upload', ['_token' => csrf_token() ])}}",
    filebrowserUploadMethod: 'form'
};

// 分别初始化两个编辑器
CKEDITOR.replace('editor1', ckConfig);
CKEDITOR.replace('editor2', ckConfig);
</script>

3. 排查额外问题

  • 检查浏览器控制台是否有JS报错,确认CKEditor插件加载正常(standard版本默认包含上传相关插件);
  • 验证admin.berita.upload路由为POST方法,且Laravel的CSRF验证正常(web路由组默认开启CSRF保护)。

内容的提问来源于stack exchange,提问作者aLi akbar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 12:23:03