2012-09-25 35 views
2

我想實現CKEditor 4到一個ASP NET網站,我正在努力,但我不知道如何保存編輯的材料從inline editor我知道該怎麼做與舊版本,但我只是不明白這個過程。保存編輯在線文本從CKEditor 4 asp網

我看了論壇...沒有v4論壇。

我看了 的文檔....找不到它。

我有一種感覺,這是一個簡單的任務,但我只是不知道如何。

回答

5

您可以通過CKEDITOR.instances.editor1.getData()獲取您的數據。然後,您可以通過AJAX發送它或將其作爲某個輸入字段的值存儲。定期爲此,請按照以下方法:

CKEDITOR.disableAutoInline = true; 

var editor = CKEDITOR.inline('editable'); 

var savedData, newData; 
function saveEditorData() { 
    setTimeout(function() { 
     newData = editor.getData(); 

     if (newData !== savedData) { 
      savedData = newData; 

      // Send it with jQuery Ajax 
      $.ajax({ 
       url: 'yourUrl', 
       data: savedData 
      }); 

      // Or store it anywhere... 
      // ... 
      // ... 
     } 

     saveEditorData(); 
    }, 500); 
}; 

// Start observing the data. 
saveEditorData(); 

您也可以觀察到submit event並與您的數據更新一些(隱藏)表單域。

玩得開心!

+0

太棒了!在一個答案中開始保存我的數據的兩種好方法!誰還能要求更多! –

+3

這是一個可怕的答案。對數據進行輪詢改變絕對不是Javascript應對事物的方式。這是事件的目的。您確實提到了「觀察提交事件」,但這會讓您的代碼對編輯器所處的上下文進行假設。幸運的是,CKEDITOR類支持一個事件處理機制(http://docs.ckeditor.com/#!/api/CKEDITOR.event),並觸發了許多事件來觀察。 –

+1

@TommiForsström該方法取決於需要什麼樣的實現。 Adam沒有提及他開發的是什麼樣的應用程序,所以我們不能認爲這是錯誤的。他可能需要經常爲「草稿備份」保存編輯器快照,比如Gmail或類似的,不是嗎?嗯? 問題是,** CKEditor不支持內容更改**事件。這是一個非常複雜的事情,將在4.1中得到支持。請參閱:http://dev.ckeditor.com/ticket/9794目前沒有簡單和安全的方法(事件)來確定編輯器內容是否發生了變化,因爲有很多方法可以對其進行修改。 – oleq

1

你是想通過AJAX獲取它還是通過表單發送?例如右上行內編輯區與Lorem存有值可以在舊版本中得到喜歡用簡單的

CKEDITOR.instances.editor1.getData(). 

XHTML output example他們有一個簡單的表格,似乎工作,我相信使用(靜態)內聯編輯器也是一樣的。

如果您將元素動態轉換爲內聯編輯器,我會嘗試綁定到提交事件,並在通過所有CKEDITOR.instances提交循環之前,將其數據隱藏到字段中。至於隱藏字段的命名或識別哪個隱藏字段對應於哪個動態編輯器,您必須弄清楚自己:)