tinyMCE和' mceAddEditor'的问题

时间:2016-02-29 20:14:01

标签: javascript jquery tinymce tinymce-4

所以我有一个使用JavaScript来动态添加<textarea>的页面。我需要这些文本区域来使用tinyMCE。我正在使用tinyMCE v4。

我有一个tinyMCE的初始化函数

function TinyMceEditConfig() {
        tinymce.init({
      selector: '.editor'
    });
}

然后我调用函数

TinyMceEditConfig();

然后我创建动态文本区域。基本上,有人选择他们想要从下拉列表中输入文本。一旦他们选择了它,就会生成文本区域。当用户点击下拉列表时,它会调用一个包含此代码的函数(我的括号可能在这里弄乱了......不要注意那个,哈哈,它们在我的代码中很好,只看肉)

return $('<div>', {
        'css': {'display': 'none'},
        'html': [
            $('<textarea>', {
                'value': this.text_value,
                'placeholder': this.placeholder_text,
                'class': "editor"] });

};

所以在这一点上,我可以点击下拉列表来生成文本区域(纯文本)。如果我刷新页面tinyMCE开始,一切都很好。在线查看以下代码应该可以解决我的问题,以便在添加字段后立即显示tinyMCE。在我调用最后一个代码片段之后,这是在我的代码中。

tinymce.EditorManager.execCommand('mceAddEditor', false, ".editor");

然而,它没有.....任何建议?

1 个答案:

答案 0 :(得分:0)

在页面上存在之前,您无法在textarea上调用init()。如果我理解您的上述评论,则首先调用您的TinyMCE init()函数,然后再将textarea元素添加到页面中。这不起作用,因为init()只会处理页面上已存在的内容。

当你动态地将新的textarea添加到页面时,你需要在textarea是DOM的一部分之后调用tinymce.init(),以便让TinyMCE代替textarea。

创建一个TinyMCE小提琴(或CodePen等)可能有助于显示您实际在做什么,因为这可能有助于人们了解事情的失败。