我想在引导模式上显示 ckEditor,但 ckEditor 未打开,如下所示。在互联网上搜索后,我以不同的方式得到了一些解决方案,例如此链接,但我将执行ajax请求,因此我必须使用
$('.cia_modal').modal('toggle')
打开模式。上述解决方案链接对我不起作用
模态按钮:
<button class="btn btn-info btn-xs cia_modal_btn" data-id="<?php echo $post->post_id; ?>" data-table="post" data-attr="post_id">
Create New Post
</button>
模态:
<!--Modal-->
<div class="modal fade cia_modal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header bg-primary">
<button type="button" class="close" data-dismiss="modal">
<span aria-hidden="true">×</span>
<span class="sr-only">Close</span>
</button>
<h4 class="modal-title">Create New Post</h4>
</div>
<div class="modal-body">
<form action="/action_page.php">
<div class="form-group">
<textarea class="ck_editor" name="post" id="" cols="30" rows="10"></textarea>
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-white" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<!--End Modal-->
Javascript:
<script type="text/javascript">
$(document).on("click", ".modal_btn", function (e) {
e.preventDefault();
e.stopPropagation();
let cia_modal = $('.cia_modal');
//Set modal show/hide
cia_modal.modal('toggle');
let id = $(this).attr('data-id');
let table = $(this).attr('data-table');
let attr = $(this).attr('data-attr');
//Set Form Data
let formData = new FormData();
formData.append('id',id);
formData.append('table',table);
formData.append('attr',attr);
$.ajax({
type: 'post',
url: '<?php echo base_url()?>post/create_post',
data: formData,
contentType: false,
processData: false,
success: function (data) {
//
}
});
});
</script>
请帮助我。谢谢
我假设您正在使用 CKEditor 4.x。
您需要使用
CKEDITOR.replace( 'ck_editor' )
创建编辑器,您只能在文档中现有的元素上执行此操作。隐藏与否并不重要。如果您的模态框位于 DOM 内部,但隐藏,则只需初始化编辑器即可。否则,您需要等到添加元素然后调用 CKEDITOR.replace
。
取决于引导程序如何实现
modal.show
。如果它只是更改CSS以使其可见,那么很可能您可以在脚本开始时初始化编辑器,如果它向文档添加元素,那么您需要使用一些引导事件来在正确的时间创建编辑器。请参阅shown.bs.modal
:https://getbootstrap.com/docs/4.0/components/modal/#events
只需初始化编辑器:
<script type="text/javascript">
ClassicEditor.create($('.ck_editor')[0])
.then( editor => {
console.log( editor );
})
.catch( error => {
console.log( error );
});
$(document).on("click", ".modal_btn", function (e) {
//....
这对我有用:
删除:Bootstrap Modal 上的 tabindex="-1" 并添加:data-bs-focus="false"
看来这不是ckeditor的问题,而是bootstrap的问题。