2011-03-08 58 views
1

我一直在尋找解決方案,但沒有任何工作解決方案。我想檢測textarea是否已經改變。我使用ckeditor,所以你不能檢查textarea本身。我在文檔中發現了一些東西,但是我無法爲它工作。用ckeditor檢測更改

有人曾試圖做到這一點,是否有可能?

回答

4

一些研究和大量使用Google一個找到一個合適的方法的後。

var content_editor = CKEDITOR.instances['content']; 

content_editor.on('key', function() { 
    change_page = true; 
}); 
+1

沒有考慮textarea中的文本被編輯器命令改變的情況(例如撤消/重做) – OviC 2013-09-27 09:39:24

+0

@OviC同意。我會爲這些做一個單獨的聽衆。 CKeditor最有可能回調它。 – RJD22 2013-09-27 10:08:13

0

有一個checkDirty()函數可以「輪詢」。否則看看SCAYT插件,我認爲他們監視擊鍵。

但我不知道發生了「公共」事件,請檢查; CKEDITOR.dom.event(DOM事件處理程序) CKEDITOR.event(內部事件處理程序)

2

我使用了jquery ckeditor方法。

下面是HTML:

<textarea id="txtMessage" class="editor" maxlength="500"></textarea> 

這裏是JavaScript:

try { 
     var config = 
      { 
       height: 180, 
       width: 515, 
       linkShowAdvancedTab: false, 
       scayt_autoStartup: true, 
       enterMode: Number(2), 
       toolbar_Full: [['Styles', 'Bold', 'Italic', 
               'Underline', 'SpellChecker', 'Scayt', 
               '-', 'NumberedList', 'BulletedList'], 
         ['Link', 'Unlink'], ['Undo', 'Redo', '-', 'SelectAll']] 

      }; 

     $('textarea.editor').ckeditor(config); 
     CKEDITOR.instances["txtMessage"].on("instanceReady", InstanceReadyEvent); 

    } 
    catch (err) { 
     alert('Error loading ck editor: ' + err); 
    } 

    function InstanceReadyEvent() { 
     this.document.on("keyup", function() { 

      var yourText = CKEDITOR.instances["txtMessage"].getData(); 
     }); 
    } 

希望有所幫助。