Submit tinymce пустое содержимое в форме ajax submit?

Моя форма использует TinyMCE для форматирования HTML, но как только содержимое всегда пустое при первом представлении. Это то, что у меня есть для функции отправки:

$('#commentForm').click('submit', function () {
        tinyMCE.triggerSave(true, true);
        $(this).ajaxSubmit({
            success: function (result) {
                if (result.success) {
                    $('#commentForm')[0].reset();
                    var newComment = { comment: result.comment };
                    // Append the new comment to the div
                    $('#commentTemplate').tmpl(result.comment).appendTo('#commentsTemplate');
                }
                $('#commentFormStatus').text(result.message);
            }
        });
        return false;
    });

Я добавил tinyMCE.triggerSave(true,true);, но он не работает. Любое предложение?

Спасибо.

Ответ 1

Попробуйте заменить

tinyMCE.triggerSave(true, true);

по

tinyMCE.get("id").save();

где "id" - это идентификатор вашего текстового поля.

Ответ 2

Важно. Если вы вызываете tinymce() два или более раза в одном и том же текстовом поле, любые методы save() будут работать не так. (У меня есть функция, вызываемая при каждом изменении DOM)

Итак, я исправил это, удалив класс:

$('textarea.tinymce').each(function(){
    $(this).removeClass('tinymce');
    .......

Ответ 3

Я не знаю, как это работает.

У меня возникли проблемы с firefox, и я решил использовать этот workarroud

на кнопке отправки: и мое текстовое поле называется "Contenido"

tinyMCE.get("Contenido").setContent(tinyMCE.activeEditor.getContent());
document.getElementById("Contenido").value=tinyMCE.activeEditor.getContent();

Ответ 4

Если у вас немного TINYMCE в форме: перед отправкой вызова

jQuery(tinymce.get()).each(function(i, el){
        document.getElementById(el.editorId).value = el.getContent();
    });

Ответ 5

Хорошее решение. Ксана Лысак

Но для меня это потребовало небольшой модификации, возможно, из-за версии 4.1, мне пришлось использовать el.id вместо el.editorId

$("#thesubmit").click(function(e){
    $(tinymce.get()).each(function(i, el){
        if(el.id)
            document.getElementById(el.id).value = el.getContent();

});

Ответ 6

$('form').on('submit', function(form){
    // save TinyMCE instances before serialize
    tinyMCE.triggerSave();

    var data = $(this).serialize();
    $.ajax({
        type:       'POST',
        cache:      false,
        url:        'inc/process.php',
        data:       data,
        success:    function(){
                        console.log("Updates have successfully been ajaxed");
        }
    });
    return false;
});

Ответ 7

Начиная с версии 4.2.5 (и, возможно, ранее) вам, похоже, ничего не нужно делать. Он просто сохраняет значения при редактировании (возможно, при размывании).

Как только я заметил, что случайное применение TinyMCE более одного раза к одному и тому же элементу останавливает нормальное поведение сохранения. Это заставило меня провалиться со всеми другими решениями, пока я не заметил, что решение @Ксана Лысак выполняло each дважды в одном элементе.

После того, как TinyMCE можно было применить только к каждому textarea, он работал отлично, без помощи.