2010-08-17 3 views
6

Когда я нажимаю кнопку, которая вызывает обратную передачу на UpdatePanel, она вызывает tinyMCE.triggerSave().Как сохранить TinyMCE после обратной передачи в UpdatePanel

Это перезагружает панель и редактор появляется снова, но когда я пытаюсь вызвать tinyMCE.triggerSave() второй раз, когда я получаю следующее сообщение об ошибке:

g.win.document is null 

я, хотя это получало старый экземпляр, но я m также удаляет элемент управления (tinyMCE.execCommand('mceRemoveControl',false,'Editor');) после того, как я вызываю сохранение. Даже при этом он по-прежнему падает во второй раз.

Как это исправить?

+1

Вы смотрели на http://stackoverflow.com/questions/699615/cant-post- дважды-из-того же-ajax-tinymce-textarea и http://stackoverflow.com/questions/547327/how-to-make-tinymce-work-inside-an-updatepanel? – Tchami

ответ

2

После долгих раздумий я обнаружил, что исправление, которое @André Gadonski не отправлено, больше не работает в версии TinyMCE 4. Это не только не работает, но и не дает обратной связи с ошибкой на консоли!

Новая команда mceRemoveEditor

Источник: http://www.tinymce.com/forum/viewtopic.php?id=31256

Я обнаружил, что это может использоваться либо непосредственно перед повторным initalising TinyMCE или непосредственно перед панелью обновления ASP обновляется с помощью;

var prm = Sys.WebForms.PageRequestManager.getInstance(); 
prm.add_beginRequest(BeginRequestHandler); 

function BeginRequestHandler(sender, args) { 
    tinymce.execCommand('mceRemoveEditor', true, 'EditorID'); 
} 
+0

Это! не забудьте называть 'tinyMCE.triggerSave();' перед этим, иначе вы потеряете что-либо, введенное в редактор. – GJKH

+0

Я застрял в течение 3 часов в этой проблеме, написал ли вы этот код в '$ (document) .ready ({..})' function? – Kamran

6

tinyMCE.execCommand ('mceRemoveControl', true, 'Editor');

Перед тем как покинуть UpdatePanel, он заставит tinyMCE полностью удаляться, а затем, когда вы снова добавите его, он не будет аварийно завершен.

+1

СПАСИБО !! Это сводило меня с ума! Спасибо огромное! Уже в течение 90 минут он работает в Интернете. – Lukas

2

Для tinymce 3.2.x используйте для удаления экземпляра tinyMCE в IE8 или любом другом браузере. Поскольку функция tinymce.execCommand делает поля ввода недействительными в IE8.

tinyMCE.remove(editor); //editor is instance of tinymce editor and not editor id 

Это исправит ошибку «Разрешение отказа», не отключая другие поля ввода на той же странице.

2

У меня такая же проблема. Для исправления вы можете добавить код сценария для элемента create post back. моя кнопка создать запись назад, я добавляю его OnClientClick():

<asp:LinkButton ID="lbnSave" OnClick="lbnSave_Click" ToolTip="Add New" OnClientClick="dotim()" 
         runat="server">save</asp:LinkButton> 

и сценарий:

function dotim() { 
    tinyMCE.triggerSave(); 
    } // this is my attempt at a fix 
Смежные вопросы