Суть проблемы такова: при отправке формы при помощи ajax плагина jquery поля, которые с tinymce редактором, отправляются устаревшие.
Для того, чтобы разобраться в проблеме, посмотрим как устроен tinymce, он скрывает (не путать с удалением) нужные <textarea> и на их месте создает свой блок с текстовым редактором. Улавливая событие отправки формы, tinymce вставляет из своих блоков текст в блок <textarea> и отправляет форму.
А плагин JqueryForm переопределяет событие отправки на себя, тем самым tinymce не успевает вписать изменения и форма отправляется со старыми данными в textarea, решение вопроса такое:
$(document).ready(function()
{
$('#ajax_form').submit(function() {
tinyMCE.triggerSave();
$(this).ajaxSubmit();
return false;
})
});
P.S. (Как всегда не всё по плану)
Я не сразу нагуглил эту инфу и решил написать свой аналог tinyMCE.triggerSave(), может кому то пригодится в целях изучения jquery
function text_save_tiny (obj)
{
$(obj).find('textarea').each(
function(){
//если у textarea нет id, делаем id=name
if (!$(this).attr('id')) $(this).attr('id',$(this).attr('name')); $(this).val(tinyMCE.get($(this).attr('id')).getContent());
});
}
Для того, чтобы разобраться в проблеме, посмотрим как устроен tinymce, он скрывает (не путать с удалением) нужные <textarea> и на их месте создает свой блок с текстовым редактором. Улавливая событие отправки формы, tinymce вставляет из своих блоков текст в блок <textarea> и отправляет форму.
А плагин JqueryForm переопределяет событие отправки на себя, тем самым tinymce не успевает вписать изменения и форма отправляется со старыми данными в textarea, решение вопроса такое:
$(document).ready(function()
{
$('#ajax_form').submit(function() {
tinyMCE.triggerSave();
$(this).ajaxSubmit();
return false;
})
});
P.S. (Как всегда не всё по плану)
Я не сразу нагуглил эту инфу и решил написать свой аналог tinyMCE.triggerSave(), может кому то пригодится в целях изучения jquery
function text_save_tiny (obj)
{
$(obj).find('textarea').each(
function(){
//если у textarea нет id, делаем id=name
if (!$(this).attr('id')) $(this).attr('id',$(this).attr('name')); $(this).val(tinyMCE.get($(this).attr('id')).getContent());
});
}
Комментариев нет:
Отправить комментарий