jquery对话框中的Ckeditor在关闭后不显示

时间:2012-09-04 22:43:05

标签: ckeditor

我试图在jQuery对话框中打开ckeditor第一次打开ckeditor框完美我再次点击它jQuery对话框加载textarea没有编辑器。

我假设它是因为我没有正确地破坏它或重新初始化我不知道这里有一些我尝试过的片段。

<script type="text/javascript">
if (CKEDITOR.instances['ContentText']) {
CKEDITOR.remove(CKEDITOR.instances['ContentText']);
}

CKEDITOR.replace('ContentText',
{

disableObjectResizing: true,
resize_enabled: false,
shiftEnterMode: CKEDITOR.ENTER_BR,
toolbarCanCollapse: false,
forcePasteAsPlainText: true
});
</script>

<script type="text/javascript">
if (CKEDITOR.instances.ContentText) {
CKEDITOR.instances.ContentText.destroy();

}

CKEDITOR.replace('ContentText',
{

disableObjectResizing: true,
resize_enabled: false,
shiftEnterMode: CKEDITOR.ENTER_BR,
toolbarCanCollapse: false,
forcePasteAsPlainText: true
});
</script>

这是我在视图中的对话框关闭功能中尝试过的局部视图中表单末尾的代码 尝试编辑器销毁..如果你想看到代码在行动我可以部署它。

2 个答案:

答案 0 :(得分:0)

可能发生的是您第二次打开对话框时没有初始化CKeditor。第一次在页面加载时发生。但第二次模态对话框可能会刷新dom(html)元素,而这些新元素没有附加ckeditor。

您可以通过在单击以打开对话框时运行初始化代码来解决此问题。最好的方法是将ckeditor代码抛出一个函数,并将其添加到触发对话框的click事件中。

但是既然你没有发布打开对话框的代码,那我就错了。

答案 1 :(得分:0)

尝试使用:

CKEDITOR.editor.prototype.destroy

而不是

CKEDITOR.remove

此外,您应该编写一个在打开对话框时调用的函数,该函数包含您的CKE代码(破坏和重新实例化实例)。

如果这些都没有帮助,您可以重命名textarea并使用您创建的新名称调用它:

var newCKname = "ContentText" + Math.floor((Math.random()*50)+1);
$('#ContentText').attr('id',newCKname);
[instantiate CKE again with the newCKname]