2012-07-09 73 views
4

我正在使用CKEditor將我的textareas改爲wysiwyg。它一切正常,除非我通過Ajax調用加載內容。然後我的CKEditor不加載。在ajax內容中加載ckeditor

我搜索了一個解決方案,但無法找到任何適合我的工作。

我的Ajax調用基本上是這樣的:

$.ajax({ 
    type: "POST", 
    url: url, 
     success: function(data) { 
      $('#content').html(data); 
      $('.ckeditor').ckeditor(); 
     } 
}); 

正如你可以看到我試圖使用功能CKEditor的()以編程方式加載CKEditor的。但是,這給了我以下錯誤:

火狐說:

$(".ckeditor").ckeditor is not a function

和IE說:

Object doesn't support property or method 'ckeditor'

是否有任何其他方式在內容加載到加載由類名的CKEditor通過Ajax調用?

+0

如果該錯誤消息是「.ckeditor不是函數」,那麼就意味着對於CKEditor的JS文件之前沒有加載。您是否使用'$(document).ready'或者是否在腳本的最後放置了沒有文檔就緒回調函數的js片段? – 2012-11-20 09:55:30

回答

2

有一種解決方法。照常加載你的ckeditor,但保持隱藏。當內容通過ajax加載編輯器div並通過jquery顯示時。

6

首先你必須加載jQuery的適配器 '/path/to/ckeditor/adapters/jquery.js'

$('.ckeditor').ckeditor();會工作。

4

您可以使用命令:

CKEDITOR.replace('editor1'); 

,但有一點不同 - editor1是textarea的ID,而不是類。

+0

工程就像一個魅力! – Keutelvocht 2017-08-31 11:57:15

1

我試過接受的答案,通過呼籲 $('.ckeditor').ckeditor(); 在我的ajax的成功propery。然而這給了一個錯誤。

但是StanleyD的答案確實奏效。

附加與阿賈克斯的內容後,嘗試了ajax的成功屬性中加入以下代碼: CKEDITOR.replace('textareaId');

1

有simlar問題。在AJAX +將元素附加到頁面(具有可編輯屬性的元素)後,我需要使用CKEDITOR的多個區域。花了很多個小時無果,然後...

,我發現這個並添加它後,這些元素CONTENTEDITABLE設置爲true:

CKEDITOR.inlineAll();

處理好初始化我所有的CKEDITOR領域後AJAX +附加到頁面。

https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR-method-inline