2012-03-12 105 views
5

我想如果事情是在CKEditor的使用jquery變化來檢測,但不能讓它開始工作。如果CKEditor的內容發生變化

var isModified = false; 

$('textarea,input').change(function(){ 
     if(!isModified){ 
      isModified = true; 
     } 
}); 

$(".ckeditor").document.on('keydown', function() { isModified = true; }); 

window.onbeforeunload = function(){ 
     $(".ckeditor").ckeditorGet().updateElement(); 

     if(isModified){ 
       return "Are you sure you want to leave page?"; 
      } 
    }; 

有沒有人知道需要什麼才能使它適用於CKEditor 3.6.2?它適用於所有其他表單元素。

回答

3

您可以通過綁定到編輯器的關鍵事件追蹤在編輯器中修改。

使用jQuery適配器:

$('.ckeditor').ckeditorGet().on('key', function(e) { 
    var keyCode = e.data.keyCode; // if you need to track the key 
    isModified = true; 
}); 

文檔上key事件

+7

說明發布信息:一些改動的內容可能不會被用鑰匙觸發的事件,例如使一些大膽的只是鼠標咔嗒瓣,不是一個單一的鍵盤水龍頭。字。 CKeditor 4.X的 – Nenotlep 2013-02-13 08:58:06

0

與本地Drupal安裝檢查,CKEditor的不是普通的HTML表單元素(它不是一個文本)。相反,它是一個模仿表單元素的IFrame。我認爲您可能需要創建一個小型CKEditor插件填充程序,並使用它來與本地腳本進行通信,請參閱:add code for event listener for keypress in ckeditor

1

您可以使用此CKEditor plugin將觸發一個事件,每當內容變化。

+0

?而關於@Nenotlep更新,「CKEditor 4.2已經出來,它將onChange事件作爲一個功能引入」,是相同的還是插件更好? – 2013-11-21 15:50:37

+1

這是一個不同的實現。相反,選擇現有的插件,並提高它的他們決定寫使用撤消一個非常基本的版本,所以他們丟失了所有我描述的,當我解釋了爲什麼撤消系統中的CKEditor是不夠的,改變事件的特點。 – AlfonsoML 2013-11-21 22:03:31

+0

鏈接到頁面表示它不起作用,並且不會爲ckEditor 4更新。 – 2014-11-03 07:57:00

28

a function called checkDirty() in the CKE api這一點。這樣你就不需要推出自己的產品。還有其他有用的功能,如resetDirty()。試試這個作爲測試:

if (CKEDITOR.instances.editor1.checkDirty()) alert("Content changed"); 

更新2013年5月7日

http://dev.ckeditor.com/ticket/9794 - 更改事件是一個確認的新功能!它也被標記爲Milestone 4.2,並通過CKSource的鳴叫確認!只是不相信里程碑的到期日,他們往往會改變。

更新2013年8月1日

CKEditor的4.2出來了,推出了onChange事件爲特徵。顯然它不是100%可靠的根據文檔的每一個可能的變化 - 希望它是足夠好的使用!在http://ckeditor.com/release/CKEditor-4.2

相關問題