6

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

这个错误报告似乎说通过使用补丁提供的问题是固定的,但它似乎对我不起作用......

这是我的代码(也许我以编程方式做错了):

HTML:

<div id="ad_div" title="Analyse documentaire">
<textarea id="ad_content" name="ad_content"></textarea>
</div>

我的包含(所有内容都正确包含,但可能是包含订单问题?):

<script type="text/javascript" src="includes/ckeditor/ckeditor.js"></script>
<link rel="stylesheet" type="text/css" href="includes/jquery/css/custom-theme/jquery-ui-1.7.2.custom.css" />
<script type="text/javascript" src="includes/jquery/js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="includes/jquery/js/jquery-ui-1.7.2.custom.min.js"></script>
<script type="text/javascript" src="includes/jquery/plugins/dialog-patch.js"></script>
<script type="text/javascript" src="includes/ckeditor/adapters/jquery.js"></script>

Javascript:

$('#ad_content').ckeditor();

/* snip */

$('#ad_div').dialog(
{
    modal: true,
    resizable: false,
    draggable: false,
    position: ['center','center'],
    width: 600,
    height: 500,
    hide: 'slide',
    show: 'slide',
    closeOnEscape: true,
    autoOpen: false
});

$('.analyse_cell').click(function(){
    $('#ad_div').dialog('open');
});

编辑:经过进一步测试后,我注意到按下工具栏按钮给了我这个错误:

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

4

11 回答 11

3

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

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

希望这可以帮助。

于 2013-03-06T00:49:00.563 回答
2
$('.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());
        }
    });
});
于 2010-04-14T18:12:47.403 回答
2

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

于 2010-11-11T19:20:06.253 回答
1

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

$(document).on('focusin', function(e) {
     e.stopImmediatePropagation();
});
于 2014-10-01T07:01:53.753 回答
0

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

于 2010-04-05T14:26:26.473 回答
0

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

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;       
})
于 2013-07-12T10:42:55.720 回答
0

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

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

我正在使用版本 3.6.2

于 2012-01-05T08:10:58.053 回答
0

我遇到了同样的问题,出于某种原因,我发现在打开对话框之前将一些文本放入 textarea 可以解决问题。不是真正的解决方案,但对我有用。

$('#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');
});
于 2010-05-16T19:49:23.867 回答
0

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

我花了很长时间才弄清楚这一点。现在编辑器的行为符合预期。

于 2013-01-29T11:18:54.010 回答
0

我通过简单地在 jQuery UI Dialog 构造函数中添加 zIndex=-1 来解决这个问题,就像这样

$('#modalWindow').dialog({ autoOpen: false, modal: true, zIndex : -1});
于 2012-01-24T03:42:19.770 回答
0

试着把下面的适配器。修复是覆盖适配器。

于 2010-03-29T17:21:23.643 回答