当我在一个静态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内容之外的所有内容都会显示出来。
我不明白,与我的工作设置的唯一区别是,后者是静态的而不是动态创建的。
任何人都可以帮助我吗??
干杯 克里斯
答案 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会起作用吗?