Текстовая область TinyMCE и форма сообщения с использованием ajax

Я использую tinyMCE для текстовых полей и POSTing формы через AJAX.

Но когда я пытаюсь сохранить значение 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;
    });

Пожалуйста, помогите, любая помощь будет оценена

Ответ 1

Используйте это вместо tinymce.triggerSave();

$('#' + 'your_editor_id').html( tinymce.get('your_editor_id').getContent() );

Ответ 2

Вы можете настроить TinyMCE следующим образом, чтобы сохранить значения скрытых текстовых областей в синхронизации, поскольку изменения производятся с помощью редакторов TinyMCE:

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

При этом вы можете в любое время получить доступ к актуальным значениям непосредственно из элементов textarea.

Это было протестировано на TinyMCE 4.0

Демо работает: http://jsfiddle.net/9euk9/

Ответ 3

Альтернативная реализация для одного, отправленного Дэном Малкольмом для TinyMCE 3.x, будет следующей:

tinymce.init({
    selector: "textarea",
    setup: function (editor) {
        editor.onChange.add(function() {
            editor.save();
        });
    }
});

Помимо работы с 3.x, эта версия использует editor.save вместо tinymce.triggerSave, что означает, что она обновляет текущий редактор, а не все редакторы на странице.