четверг, 12 июля 2012 г.

tinyMCE и Jquery Form Plugin

Суть проблемы такова: при отправке формы при помощи 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());
});

}

Комментариев нет:

Отправить комментарий