jQuery对话框中的CKEditor实例

jQuery对话框中的CKEditor实例,jquery,ckeditor,jquery-dialog,Jquery,Ckeditor,Jquery Dialog,我正在使用jQuery打开一个对话框窗口,其中的textarea转换为CKEditor实例。我使用的是CKEditor团队提供的jQuery适配器,但当对话框窗口打开时,我无法与编辑器交互(它已创建,但“null”写在内容空间中,我无法单击任何内容或修改内容) 似乎说,通过使用补丁提供的问题是固定的,但它似乎不适合我 下面是我的代码(可能是我编程时出错了): HTML: 编辑:经过进一步测试后,我注意到按下工具栏按钮会出现以下错误: 错误:此.document.getWindow().$为 未定

我正在使用jQuery打开一个对话框窗口,其中的textarea转换为CKEditor实例。我使用的是CKEditor团队提供的jQuery适配器,但当对话框窗口打开时,我无法与编辑器交互(它已创建,但“null”写在内容空间中,我无法单击任何内容或修改内容)

似乎说,通过使用补丁提供的问题是固定的,但它似乎不适合我

下面是我的代码(可能是我编程时出错了):

HTML:

编辑:经过进一步测试后,我注意到按下工具栏按钮会出现以下错误:

错误:此.document.getWindow().$为 未定义的源文件: 包括/ckeditor/ckeditor.js行:82


试着把适配器放在下面。修复程序正在覆盖适配器。

由于某些原因,我无法让它工作,但通过手动实现相同的功能,我成功地获得了相同的效果。

我遇到了相同的问题,出于某些原因,我发现在打开对话框之前将一些文本放入文本区域可以达到效果。这不是一个真正的解决方案,但对我有效

$('.analyse_cell').click(function(){
    $('#ad_div').dialog({
        modal: true,
        resizable: false,
        draggable: false,
        position: ['center','center'],
        width: 600,
        height: 500,
        hide: 'slide',
        show: 'slide',
        closeOnEscape: true,
        autoOpen: false,
        open: function(event,ui) {
            $('#ad_content').ckeditor();
        },
        close: function(event,ui) {
            CKEDITOR.remove($("#ad_content").ckeditorGet());
        }
    });
});
$('#ad_content').ckeditor();

/* snip */

$('#ad_div').dialog(
{
    modal: true,
    /* Your options here. */
});

$('.analyse_cell').click(function(){
    // Add some content into textarea.
    $('#ad_content').val("Enter content here.");
    $('#ad_div').dialog('open');
});

使用最新版本的CKEditor。帮我解决了。版本3.4.2

我正在使用jQuery打开一个对话框窗口,其中文本区域转换为
CKEditor
的实例。我正在使用由
CKEditor
团队提供的jQuery适配器,但当对话框窗口打开时,我无法与编辑器交互(它已创建,但
null
写入内容空间,我无法单击任何内容或修改内容)

错误:this.document.getWindow().$是未定义的源文件:includes/ckeditor/ckeditor.js
行:129


我使用的是3.6.2版,通过在jQueryUI对话框构造函数中添加zIndex=-1解决了这个问题,如下所示

$('#modalWindow').dialog({ autoOpen: false, modal: true, zIndex : -1});

刚刚通过在弹出对话框(显示选项)上禁用jQuery UI效果解决了完全相同的问题


我花了很长时间才弄明白。现在编辑器的行为符合预期。

我使用了一个带有“show:”选项的回调函数来延迟实例化CKEditor,直到“show”动画完成。我发现只要50毫秒就可以了

modal: true,
show: {
    effect: "drop",
    complete: function() {
        setTimeout(function(){
            $( "#selector" ).ckeditor();
        },50);
    }
},
hide: "drop",

希望这有帮助。

神秘主义,但对我有帮助。 在创建对话框之前,我强制设置空数据

CKEDITOR.instances['email_text_of_message'].setData('')
对话框中的ckeditor(“ckeditor”,“3.4”)工作正常

$("#create_email").click(function(event){

CKEDITOR.instances['email_text_of_message'].setData('')

$("#email_body").dialog({    modal: true,
                             minHeight: 720,
                             minWidth: 900,
                             buttons: [
                            {
                             id: "button_create_email",
                             text: $('#inv_notice16').text(),
                             click: function() {
                                    $("#email_body").dialog('close')
                           }
                            }]}); 
    return false;       
})

只需将此代码段添加到您的文档中,问题就解决了

$(document).on('focusin', function(e) {
     e.stopImmediatePropagation();
});

我移动了适配器下方的固定件,并尝试将其完全移除,但两者似乎都没有效果。我点击了一些按钮,我得到了这个错误:错误:this.document.getWindow().$是未定义的源文件:includes/ckeditor/ckeditor.js行:82希望这能让我们了解真正的问题是什么:)(非常感谢BTW)请分享哪些方面是手工编码的,这样我们也可以利用它。我创建了一个div,它定位在整个视口上,并将ckeditor嵌入其中。它并不优雅,也没有使用jQuery的任何奇特功能,所以我认为它不值得包括在内。。。我绕过了这个问题,但没有解决。使用CK编辑器和UI对话框对我不起作用。。。
CKEDITOR.instances['email_text_of_message'].setData('')
$("#create_email").click(function(event){

CKEDITOR.instances['email_text_of_message'].setData('')

$("#email_body").dialog({    modal: true,
                             minHeight: 720,
                             minWidth: 900,
                             buttons: [
                            {
                             id: "button_create_email",
                             text: $('#inv_notice16').text(),
                             click: function() {
                                    $("#email_body").dialog('close')
                           }
                            }]}); 
    return false;       
})
$(document).on('focusin', function(e) {
     e.stopImmediatePropagation();
});