动态添加TinyMCE到div

时间:2016-05-16 19:24:46

标签: jquery ajax serialization tinymce

当我在一个静态div上启动一个tinymce时它运行得很好。 这是我使用的,因此用户可以发布新帖子。

然后,当用户想要通过循环编辑从db显示的帖子时,他可以点击编辑并将新的tinymce实例附加到内容div。到目前为止一切都很好。

问题是,在更新编辑的帖子时,ajax无法序列化tinymce编辑器。

 <div id="content_text_<?php echo($id); ?>" class="event-edit-input textarea-content">
     <?php echo($content); ?>
 </div>

这是用户点击编辑时调用的函数:

/////// create a tinymce instance and apend it to the given element //////
function create_tinymce(element){
tinymce.init({
    selector: element,
    skin: 'jb',
    content_css : 'css/tinymce-style.css',
    menubar: false,
    toolbar: 'undo redo | bold italic fontsizeselect | alignleft aligncenter alignright alignjustify | link',
    fontsize_formats: '8px 10px 12px 14px 18px 24px 36px',
    entity_encoding: 'named'
});
}

然后发布表单的函数:

/////// posting the form ////
function post_form(form, script, editor){

tinyMCE.triggerSave(true, true);

var serialized_form = $("#"+form).serialize();

alert(serialised_form);

}

当我提醒序列化的表单数据时,除了tinymce内容之外的所有内容都会显示出来。

我不明白,与我的工作设置的唯一区别是,后者是静态的而不是动态创建的。

任何人都可以帮助我吗??

干杯 克里斯

1 个答案:

答案 0 :(得分:0)

您可以尝试将triggerSave()函数添加到TinyMCE init,以便在编辑器的更改事件中自动更新基础字段...

tinymce.init({
    selector: "textarea",
    .
    .
    setup: function (editor) {
        editor.on('change', function () {
            tinymce.triggerSave();
        });
    }
});

当您尝试通过AJAX发布表单时,这将无需执行此操作。

更新:您的选择器是STRING还是DOM元素?根据我在您的代码中看到的内容

function create_tinymce(element){
tinymce.init({
  selector: element,
  skin: 'jb',
  ...

看起来您正在尝试提供DOM元素(或jQuery包装的DOM元素)。 selector参数需要一个STRING,如下所示:

https://www.tinymce.com/docs/configure/integration-and-setup/#selector

如果您使用硬编码(作为测试),String会起作用吗?