2016-02-29 105 views
0

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

我有一个初始化函数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"); 

但是,它不......有什么建议吗?

回答

0

您不能在textarea上调用init(),直到它存在于页面上。如果我明白你的意见,你首先调用你的TinyMCE init()函数,然后在页面中添加textarea元素。这将不起作用,因为init()只会处理页面上已存在的内容。

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

这可能有助于创建一个TinyMCE小提琴(或CodePen等)来显示你实际上在做什么,因为这可能会帮助人们看到事情失败的地方。