Ответ 1
Попробуйте заменить
tinyMCE.triggerSave(true, true);
по
tinyMCE.get("id").save();
где "id" - это идентификатор вашего текстового поля.
Моя форма использует 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);
, но он не работает. Любое предложение?
Спасибо.
Попробуйте заменить
tinyMCE.triggerSave(true, true);
по
tinyMCE.get("id").save();
где "id" - это идентификатор вашего текстового поля.
Важно. Если вы вызываете tinymce() два или более раза в одном и том же текстовом поле, любые методы save() будут работать не так. (У меня есть функция, вызываемая при каждом изменении DOM)
Итак, я исправил это, удалив класс:
$('textarea.tinymce').each(function(){
$(this).removeClass('tinymce');
.......
Я не знаю, как это работает.
У меня возникли проблемы с firefox, и я решил использовать этот workarroud
на кнопке отправки: и мое текстовое поле называется "Contenido"
tinyMCE.get("Contenido").setContent(tinyMCE.activeEditor.getContent());
document.getElementById("Contenido").value=tinyMCE.activeEditor.getContent();
Если у вас немного TINYMCE в форме: перед отправкой вызова
jQuery(tinymce.get()).each(function(i, el){
document.getElementById(el.editorId).value = el.getContent();
});
Хорошее решение. Ксана Лысак
Но для меня это потребовало небольшой модификации, возможно, из-за версии 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();
});
$('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;
});
Начиная с версии 4.2.5 (и, возможно, ранее) вам, похоже, ничего не нужно делать. Он просто сохраняет значения при редактировании (возможно, при размывании).
Как только я заметил, что случайное применение TinyMCE более одного раза к одному и тому же элементу останавливает нормальное поведение сохранения. Это заставило меня провалиться со всеми другими решениями, пока я не заметил, что решение @Ксана Лысак
выполняло each
дважды в одном элементе.
После того, как TinyMCE можно было применить только к каждому textarea
, он работал отлично, без помощи.