2010-02-16 29 views
8

我正在開發CKEditor插件,需要在保存之前立即對編輯器的內容進行一些更改。在FCKeditor中,我使用事件實現了這一目標,但我還沒有能夠在CKEditor中找到這樣做的等效方法。我曾希望有一個合適的事件可以進入,但似乎沒有。有誰知道這樣做的一種方式?在保存在CKEditor插件之前立即更新編輯器內容

+0

您正在使用什麼'save'事件/功能? 「保存」按鈕? –

+0

是的。插件將由已經設置了CKEditor的網站所有者使用,但是他們已經看到了適合,所以我寧願保持我的插件儘可能乾淨,這意味着如果可能的話不會替換標準保存按鈕。我查看了源代碼,我似乎最好的辦法是在包含編輯器的表單中添加一個'submit'事件處理程序,但這很難做到乾淨利落。 –

回答

6

您可以使用getData事件,但要小心,因爲它也被用於內部使用。

我提起http://dev.fckeditor.net/ticket/5254重新創建一個事件

+0

與爲表單的提交事件創建我自己的處理程序一起使用? –

+1

這將是一個替代解決方案。實際上,這是我現在選擇的那個,因爲在CKEditor生成適當的事件之前,它可以更容易地處理它(我真的不知道你想做什麼,所以我猜測它必須是複雜的,只有在更新textarea後才能完成) – AlfonsoML

+0

我的插件允許用戶將存儲在不同服務器上的內容片段嵌入主HTML內容。這些在編輯器內容中用佔位符圖像表示,以防止它們在CKEditor中編輯。在編輯器保存之前,我希望用它們代表的HTML內容替換這些佔位符圖像,並且當編輯器加載時,我想將特殊HTML轉換爲佔位符(我可以使用現有事件)。也許我應該採取另一種方法? –

1

正如上面的鏈接並沒有真正對分別代替OnAfterLinkedFieldUpdate事件的解決方案,我已經writen如何去解決它很短的職位。

這裏是形式:

<form id="my_form" action="submit.php" method="post" name="my_form"> 
    <textarea id="my_text" name="my_text"></textarea> 
    <input id="submitForm" type="submit" name="submitForm" value="Submit" /> 
</form> 

的JavaScript:

var formSubmitted = false; 
$("#submitForm").live('click', function(event) { 
    if (formSubmitted === true) { 
     formSubmitted = false; 
     return; 
    } 
    event.preventDefault(); 
    //put here function to edit content == OnAfterLinkedFieldUpdate 
    var editor = CKEDITOR.instances.my_text; 
    var html = editor.getData(); 
    html.replace(searchvalue, newvalue); 
    editor.setData(html); 
    formSubmitted = true; 
    $(this).trigger('click'); 
}); 

的代碼是here

相關問題