2012-01-09 60 views
5

我正在研究现有项目。我必须检测tinyMCE focusout/blur事件以通过AJAX自动保存它。我发现下面的现有的工作代码:tinyMCE textarea专注活动?

// reinit tinymce 
$($("#chapterBill div:.module-container")[indexAfter]).find('textarea').each(function(i){ 
    editorId = $(this).attr('id'); 
    tinymce.EditorManager.execCommand('mceAddControl',true, editorId); 
}); 

有人能告诉我如何捕捉TinyMCE的textarea的focusout/blur事件?

谢谢

回答

5

您不想捕获textarea焦点/模糊。 Tinymce隐藏了以前的textarea,并创建了可以输入/编辑内容的可用内部框架。此内容会不时写入前一个隐藏的textarea(基于事件)。

为了捕获编辑器上的焦点/模糊,您需要在编辑器iframe上为此设置处理程序。

将这个代码放到你的TinyMCE的初始化

setup : function(ed) { 
    ed.onInit.add(function(ed, evt) { 
     tinymce.dom.Event.add(ed.getDoc(), 'blur', function(e) { 
      // Do something when the editor window is blured. 
      alert('blur!!!'); 
     }); 
    }); 
}, 
+1

我花了很多时间在这个,并最终得到它。谢谢。这是完美的解释。 – Awan 2012-01-10 10:10:34

+1

很高兴能够提供帮助 – Thariama 2012-01-10 10:29:21

+1

我认为Google Chrome中的“blur”存在一些问题。它在Firefox中完美运行。 – Awan 2012-01-10 13:21:24

0

我也正在寻找解决方案,以节省动态内容tinyMCE的通过AJAX。许多答案指示在init中设置此选项,但由于代码在多个系统中使用,因此无法使用此便利。我需要一个页面特定的解决方案,这点我是能够实现像这样:

$(window).load(function(){ 
    tinymce.get('id').on('blur', function(e) { 
     var content = tinymce.get('id'); 
     console.log(content); 
    }); 
}); 

随着id是id属性的textarea元素上进行设置。