2014-02-27 34 views
7

有了很多幫助,我終於得到了CKEditor來更新關聯的文本區域。 See the post hereckeditor內容更改爲textarea更改事件 - 表單上的多個ckeditors

但是,當表單上有超過1個CKEditor時,我很難理解如何讓CKEditor更新每個關聯的文本區域。

這裏是我現在有的jQuery。它只更新窗體上的最後CKEditor的相關文本區域:

for (var i in CKEDITOR.instances) { 
     CKEDITOR.instances[i].on('change', function() { CKEDITOR.instances[i].updateElement() }); //update the relative hidden textarea. 
    } 

當我在表格上5個或10 CKEditors如何更新各相關CKEditor的文本區域?

回答

12

時,對於要安裝你的頁面上的CKEditor的每個實例,下面的代碼添加到您的jQuery腳本:


CKEDITOR.instances['id_of_text_area'].on('change', function() { CKEDITOR.instances['id_of_text_area'].updateElement() }); 


上面的JavaScript應該替換我在原始問題中顯示的代碼。

我希望這對一些人有幫助。

+1

最後,你是唯一一個在互聯網上發佈了答案的人。 – dspacejs

3

您編寫的代碼將一次更新一個CKEditor的textarea,因爲它正在爲每個CKEditor添加一個更改事件。因此,這將始終更新已更改的最後一個元素。

處理多個CKEditors的更新用的方式是通過使用此代碼提交我的形式

for (var i in CKEDITOR.instances) { 
    CKEDITOR.instances[i].updateElement(); 
} 
+0

謝謝,但我需要的CKEditor當用戶輸入數據來更新各相關文本區域到CKEditor的時候有表單上有1個以上的CKEditor - 不是當我提交表單時。有任何想法嗎? – user3354539

4

如果您通過類名替代textarea元素,只是這樣做:

CKEDITOR.on('instanceReady', function(event) { 
    var editor = event.editor; 

    editor.on('change', function(event) { 
     // Sync textarea 
     this.updateElement(); 
    }); 
});