TinyMCE отправляет пустое значение, когда я пытаюсь использовать несколько конфигураций
Я использую 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 ответ
Вы должны инициализировать ваши редакторы, используя mode: "exact",
в ваших подразделениях. Затем вы можете инициализировать один экземпляр tinymce, используя
tinyMCE.execCommand('mceAddControl', false, editorid); //editorid should be the id of the textarea
и настройки ваших модулей будут применены (у меня почему-то возникло ощущение, что что-то довольно плохое, если использовать два модуля для всех редакторов tinymce (потому что, похоже, они оба вызываются для всех)).
РЕДАКТИРОВАТЬ: Чтобы иметь возможность использовать разные init вы должны вызвать 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);