2011-03-08 71 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(); 
     }); 
    } 

希望有所帮助。