#jquery #jquery-plugins #tinymce
#jquery #jquery-плагины #tinymce
Вопрос:
У нас есть форма, в которой довольно много текстовых областей (в некоторых случаях до 20). Каждая из этих текстовых областей преобразуется в редакторы wysiwyg с помощью плагина TinyMCE jquery следующим образом:
var tinymceoptions = {
script_url: '/Scripts/tiny_mce/tiny_mce.js',
theme: "advanced",
mode: "textareas",
elements: "text,html1",
theme_advanced_buttons1: "bold,italic,underline,formatselect,separator,image,insertfile,separator,blockquote,bullist,numlist,separator,undo,redo,separator,link,unlink,separator,code,insertimage",
theme_advanced_buttons2: "",
theme_advanced_buttons3: "",
theme_advanced_toolbar_location: "top",
theme_advanced_toolbar_align: "left",
theme_advanced_blockformats: "h1,h2,h3,p",
width: '100%',
content_css: Settings["tiny_mce_css"],
plugins: "advimage,advlink,autoresize,inlinepopups,imagemanager,paste",
relative_urls: false,
forced_root_block: false
};
$('textarea.editor').tinymce(tinymceoptions);
Проблема, с которой мы сталкиваемся, заключается в том, что примерно в 95% случаев текстовые области не обновляются содержимым wysiwyg до публикации формы. Мы даже пытались принудительно сохранить, просматривая каждый из редакторов mce и вызывая метод save() следующим образом, перед отправкой формы:
$('textarea.editor').each(function () {
$(this).tinymce().save();
});
Еще раз проверив сообщение с помощью Fiddler, я обнаружил, что текстовая область по-прежнему не обновляется соответствующим значением.
Кто-нибудь имеет представление о том, что может быть причиной этого?
Обновить
Чтобы сделать дело более … интересным… Я добавил следующие обратные вызовы и получаю странные результаты. Когда форма post РАБОТАЕТ, значение getContent() меняется каждый раз, когда я нажимаю клавишу. Когда сообщение формы НЕ РАБОТАЕТ, getContent постоянно возвращает начальное значение, независимо от того, сколько содержимого я ввожу:
setup: function (ed) {
ed.onSaveContent.add(function (ed) {
console.debug('save content: ' $(this).tinymce().getContent());
});
ed.onKeyPress.add(function (ed, e) {
console.debug('Editor contents was modified. Contents: ' $(this).tinymce().getContent());
});
}
ОБНОВЛЕНИЕ 2
Становится ближе? Я обнаружил, что очистка кэша, похоже, временно «устраняет» проблему. Последующие посещения будут отображать нарушенное поведение.
Ответ №1:
Я определил, что неправильное использование head.js был причиной проблемы. Мы загружали некоторые товары через ajax на head.ready() и применение TinyMCE во время $.ready() . Изменение $.ready() на head .ready() решил проблему.
Комментарии:
1. Спасибо. Это сработало и для меня (после нескольких часов погони за призраками!)
2. @AamirAdnan не волнуйся, я тебе помогу 🙂