单页多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
相关产品推荐
相关产品推荐

