隐藏div中的tinyMCE仅在第一次更新并变为只读

时间:2012-11-12 12:04:59

标签: javascript jquery tinymce

我的页面上有一个grid和div,其中包含tinyMCE(textarea)。 Div最初是隐藏的。填充textarea之后:

$('#editor').val(data.Content);
$("#divGrid").hide("slide");
$("#divCard").show("slide");
InitMCE();

tinyMCE中的内容出现且组件可编辑,但在用textarea(#divCard)隐藏div后,再次填充$('#editor').val(data.Content); tinyMCE只显示,内容不显示。

函数InitMCE()中的

是代码:

tinyMCE.init({
   mode: "textareas",
   theme: "advanced",
...
});

我试过

tinyMCE.execCommand("mceRemoveControl", false, '#editor');
$('#editor').val(data.Content);
$("#divGrid").hide("slide");
$("#divCard").show("slide");
InitMCE();

和:

tinyMCE.remove($('textarea'));
$('#editor').val(data.Content);
$("#divGrid").hide("slide");
$("#divCard").show("slide");
tinyMCE.execCommand("mceAddControl", false, '#editor');
InitMCE();

以及其他一些变化,但没有成功。

2 个答案:

答案 0 :(得分:0)

你为什么要隐藏textarea。

如果在初始化TinyMCE之后检查html DOM结构,您将看到TinyMCE使用div和span textarea前面来渲染您的文本,但是当您尝试编辑它时,您实际上正在编辑textarea

因此,如果你隐藏你的textarea,你将无法再编辑它。

答案 1 :(得分:0)

在编辑器初始化时隐藏源html元素(在您的情况下为textarea)时可能会出现几个问题。 Tinymce将负责隐藏前textarea。 您的问题的解决方案是在初始化之前将textarea设置为可见 - 然后您可以在编辑其内容后遇到任何问题。