如果我在基于Bootstrap模板的
HTML页面中使用
CKEditor插件,那么它的效果非常好,但是如果我将编辑器插入到这样的Bootstrap Modal中
<!-- Modal --> <div class="modal fade" id="modalAddBrand" tabindex="-1" role="dialog" aria labelledby="modalAddBrandLabel" aria-hidden="true"> <div class="modal-dialog modal-lg"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h4 class="modal-title" id="modalAddBrandLabel">Add brand</h4> </div> <div class="modal-body"> <form> <textarea name="editor1" id="editor1" rows="10" cols="80"> This is my textarea to be replaced with CKEditor. </textarea> <script> CKEDITOR.replace('editor1'); </script> </form> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> <button id="AddBrandButton" type="button" class="btn btn-primary">Save</button> </div> </div> </div> </div>
编辑器工作,但编辑器弹出窗口上的所有表单控件都将被禁用,如果您尝试添加链接或图像,例如,由于输入被禁用,您无法插入URL或任何描述.
这个问题的任何解决方法?
这是一个小提琴的例子:http://jsfiddle.net/7zDay/
解决方法
这应该有助于
http://jsfiddle.net/pvkovalev/4PACy/
$.fn.modal.Constructor.prototype.enforceFocus = function () { var $modalElement = this.$element; $(document).on('focusin.modal',function (e) { var $parent = $(e.target.parentNode); if ($modalElement[0] !== e.target && !$modalElement.has(e.target).length // add whatever conditions you need here: && !$parent.hasClass('cke_dialog_ui_input_select') && !$parent.hasClass('cke_dialog_ui_input_text')) { $modalElement.focus() } }) };
更新2016年10月
CKEditor的CDN链接已经更改,所以我更新了jsfiddle