TinyMCE textarea和使用ajax发布表单

San*_*hal 13 ajax tinymce save

我通过AJAX将tinyMCE用于textareas和POSTing表单.

但是当我尝试保存textarea值时,它会在第一次单击时使用旧值,但它会在第二次单击时获取更新值.

我尝试过使用tinyMCE.triggerSave()但它没有用.

我也尝试过tinyMCE.get('myid').getContent(),它仍然需要旧的价值观.

我的代码如下.

    $(".submit").live("click", function () {
            tinyMCE.triggerSave();
            var f = $(this).parents("form");
            var action = f.attr("action");
            var serializedForm = f.serialize();
            //tinyMCE.triggerSave(); also tried putting here
            $.ajax({
                 type: 'POST',
                 url: action,
                 data: serializedForm,
                 async: false,
                 success: function (data, textStatus, request) {
                     $(".divform").html(data);
                 },
                 error: function (req, status, error) {
                     alert&("Error occurred!");
                 }
            });
    return false;
    });
Run Code Online (Sandbox Code Playgroud)

请帮助,任何帮助将不胜感激

Dan*_*olm 44

您可以按如下方式配置TinyMCE,以便在通过TinyMCE编辑器进行更改时保持隐藏文本的值保持同步:

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

有了这个,您可以随时直接从textarea元素访问最新的值.

这已经在TinyMCE 4.0上进行了测试

演示运行于:http://jsfiddle.net/9euk9/


Tha*_*ama 11

用它代替 tinymce.triggerSave();

$('#' + 'your_editor_id').html( tinymce.get('your_editor_id').getContent() );
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,但我使用tinyMCE.activeEditor.getContent(),它的工作原理.谢谢你的回复. (2认同)

Hap*_*Dog 5

对于 TinyMCE 3.x,Dan Malcolm 发布的替代实现如下:

tinymce.init({
    selector: "textarea",
    setup: function (editor) {
        editor.onChange.add(function() {
            editor.save();
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

除了在 3.x 上工作之外,此版本还使用了editor.save代替tinymce.triggerSave,这意味着它只更新当前编辑器而不是页面中的所有编辑器。