2012-03-19 42 views
0

我有下面的代码,生成的窗体上我的默认的CKEditor:CKEditor的使用MVC:事件处理

$('#Content').ckeditor({ 
    filebrowserUploadUrl: '/ControlPanel/Reviews/UploadReviewImage/' 
}); 

正如你看到的,我的实现是很简单 - 大部分设置在config.js控制除了上传者处理程序之外,我的网站是全球的。

一直在寻找几天,但找不到任何简洁。我需要能够检测CKEditor何时被点击,并使窗口变大(尽管不是全屏)。我也想在单击CKEditor时显示一些帮助文本......但我无法弄清楚如何处理dom事件,或将JQuery事件应用于它?我已经尝试了一些不同的东西,下面是我的最新尝试:

$("#Content").ckeditorGet().click(window.showDescription); 

但我得到一个类型错误:

Uncaught TypeError: Object #<Object> has no method 'click' 

这是可以理解的,因为CKEditor的有它自己的事件系统。

CKEditor文档看起来非常不直观 - 并且这些示例并不是很有帮助。


UPDATE

我设法得到这个工作对我自己的,但因为THW的方式,我写我的window.ShowDescription功能,我需要在将它传递一个jQuery事件。这里是任何人感兴趣的代码:)

$("#Content").ckeditorGet().on("instanceReady", function() { 
     this.on("focus", function() { 
      this.resize(638); 
      // Mimic JQuery event for textarea 
      var originalEditor = $(this.container.$).parents(".input").find("textarea"); 
      originalEditor.trigger(jQuery.Event("focus")); 
     }); 
     this.on("blur", function() { 
      this.resize(400); 
     }); 
    }); 

回答

1

正如你已经怀疑,你以上所做的不会工作。 ckeditorGet方法返回一个编辑器的实例,而不是编辑器的DOM元素。

您可以使用ckeditor的focus event来确定在编辑器获得焦点时要执行的操作。

例子:

$("#Content").ckeditorGet().on('focus', function(e) { 
    // do what you want on focus 
}); 

我可以建议使autogrow plugin更改内容区域的大小?它更加概括了您的内容的大小,并且可能比尝试单独调整大小更好。

+0

谢谢 - 我昨晚工作过(根据我的需要稍微改变了它),我只是想更新问题的答案:) – Spikeh 2012-03-20 07:47:01

+0

哦,并感谢autoGrow的建议 - 实际上增强了经验(我只想在聚焦时增加宽度,所以autogrow插件是完美的)。 – Spikeh 2012-03-20 07:55:56

+0

没问题。很高兴它解决了。 – 2012-03-20 21:35:29