@entermix

Как работает tinyMCE 4?

Есть редактор tinyMCE 4:

$(function () {
    tinyMCE.init({
            selector:'#inputShortStory',
            plugins: 'image link',
    });
});


который цепляется к textarea, которая находится в форме, форма отправляется при помощи AJAXForm, так вот, при первой отправке происходит такой POST запрос:

subject=тест&short_story=&full_story=&create=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%B8%D1%82%D1%8C


тоесть поле short_story пустое, но если эту-же форму отправить еще раз, то все ок:

subject=тест&short_story=%3Cp%тест%3C%2Fp%3E&full_story=%3Cp%тест%3C%2Fp%3E&create=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%B8%D1%82%D1%8C


Почему так происходит? Как работает tinyMCE 4? Возможно после его инициализации нужно обновить DOM?
  • Вопрос задан
  • 619 просмотров
Решения вопроса 1
Дело в том, что когда вы вызываете tinyMCE на textarea, то вы не пишите в самом этом поле, он делает кучу оберток над ним и в итоге получается, что вы видите перед собой iframe. Так вот когда в редакторе вы что-либо пишите, то он не сохраняет автоматом новое значение в textarea, для этого у него есть специальный триггер triggerSave(). После его вызова у вас всегда будет актуальный контент в поле. Вот вызов редактора, который я использовал:
tinymce.init({
        selector: "textarea",
        statusbar: false,
        setup: function (editor) {
            editor.on('change', function () {
                tinymce.triggerSave();
            });
        }
    });

Теперь если вы возьмете значение из textarea, то оно будет актуальным:
var text = $('textarea).val();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы