如果CKEditor中的内容已更改

Las*_*vik 5 jquery 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?";
           }
     }; 
Run Code Online (Sandbox Code Playgroud)

有谁知道为了使它适用于CKEditor 3.6.2需要什么?它适用于所有其他表单元素.

Nen*_*lep 29

在CKE api中一个名为checkDirty()的函数.这样你就不需要自己动手了.还附带其他有用的功能,如resetDirty().试试这个作为测试:

if ( CKEDITOR.instances.editor1.checkDirty() ) alert("Content changed");
Run Code Online (Sandbox Code Playgroud)

更新5.7.2013

请参阅http://dev.ckeditor.com/ticket/9794 - 更改事件是一项已确认的新功能!它也被标记为Milestone 4.2,并通过CKSource的推文确认!只是不相信里程碑的截止日期,它们往往会改变.

更新1.8.2013

CKEditor 4.2已经出局,它将onChange事件作为一项功能引入.显然,根据文档,每次可能的变化都不是100%可靠 - 希望它足够好用!发布信息请访问http://ckeditor.com/release/CKEditor-4.2


ste*_*e_c 3

您可以通过绑定到编辑器的按键事件来跟踪编辑器内的更改。

使用 jQuery 适配器:

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

有关关键事件的文档

  • 注意:对内容的某些更改可能不会通过按键事件触发,例如,使某些内容变为粗体只是鼠标的点击声,而不是单次键盘的点击。单词。 (7认同)