TinyMCE отправляет пустое значение, когда я пытаюсь использовать несколько конфигураций - PullRequest
1 голос
/ 13 мая 2011

Я использую TinyMCE для создания редактора WYSIWYG в моем веб-приложении.Мне нужно настроить его в расширенном режиме для некоторых текстовых и в простом режиме для некоторых.Я настраиваю TinyMCE следующим образом.

<head>
    <script type="text/javascript">
        tinyMCE.init({
            mode : "textareas",
            theme : "simple",
            editor_selector : "simple"
        });

        tinyMCE.init({
            mode : "textareas",
            theme : "advanced"
        });              
    </script>
</head>

Эта конфигурация работает и показывает мне TinyMCE в простом или расширенном режиме, основанном на классе текстовой области.

Однако проблемапроисходит, когда я отправляю форму.Сервер получает пустое поле для текстовой области. (эта проблема не возникает, когда я использую только одну конфигурацию для TinyMCE)

Я провел некоторый поиск и наткнулся на предложение, в котором говорилосьЯ должен явно попросить TinyMCE сохранить контент перед отправкой.Я попытался добавить этот код в мою форму.

$('#postFeedback').click( function(){
    tinyMCE.triggerSave(true,true);
    alert("TextArea val - " + $('input[name=email]').val() + "- " + $('textarea.simple').val());
    $('form').submit();
});

Форма отправлена, но у меня та же проблема.Значение в текстовой области пустое.Я также поместил предупреждение (как показано выше), чтобы проверить значение текстовой области, и оно действительно пустое.

Некоторые вопросы для начала:

  • TinyMCE отлично работает, когда у меня всего одна конфигурация (init).Тем не менее, это испортило то, что у меня есть два?Любая подсказка, почему это может произойти?
  • Обязательно ли просить TinyMCE сохранить содержимое текстовой области?
  • Как начать отладку этой проблемы?

1 Ответ

1 голос
/ 13 мая 2011

Вы должны инициализировать ваши редакторы, используя mode: "exact", в ваших начальных значениях. Затем вы можете инициализировать один экземпляр tinymce, используя

tinyMCE.execCommand('mceAddControl', false, editorid); //editorid should be the id of the textarea

и конфигурации ваших модулей будут применены (у меня почему-то возникло ощущение, что что-то довольно плохое, если использовать два модуля для всех редакторов tinymce (потому что, похоже, они оба вызываются для всех)).

РЕДАКТИРОВАТЬ : чтобы иметь возможность использовать разные инициалы, вы должны вызвать mceAddControl, используя initialization_object вместо только идентификатора редактора. Пример:

var config_tinymce_xy = {

    mode: 'exact',
    theme: "advanced",
    content_css : "my.css",
    plugins: "code,...",

    theme_advanced_buttons1 : "code,...",
    theme_advanced_buttons2 : "...",
    ...

};

var config_tinymce_xy2 = {

    mode: 'exact',
    theme: "simple",
    content_css : "my.css",
    ...
};

init_obj = {element_id:'my_editor_id', window: window};
$.extend(true, init_obj, config_tinymce_xy);
tinyMCE.execCommand('mceAddFrameControl',false, init_obj);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...