TinyMCE是否有可用的内容焦点/模糊事件?

时间:2009-10-24 00:39:07

标签: javascript jquery html tinymce dhtml

我希望能够在编辑器首次加载时显示默认文本,例如“在此处输入内容...”,但是当用户点击/关注内容区域时,我希望此文本消失。然后,如果他们在没有输入任何内容的情况下“模糊”(移出)内容区域,我希望“默认文本”重新出现在编辑器中。

通过Google搜索并查看TinyMCE的wiki后,看起来有onActivateonDeactivate个事件应该部分执行此操作;但是,onDeactivate的wiki页面有一个免责声明,声明它不是真正的“模糊”方法,而且我无法使onActivate事件起作用(至少使用FF 3.5)。

还有其他人找到了解决方法吗?我正在使用库存TinyMCE安装并为我正在构建的网站上的其他JS任务加载了jQuery,所以如果TinyMCE API中没有任何可用的东西,我可以使用一些jQuery魔法来实现这一点。

谢谢, 塞特

2 个答案:

答案 0 :(得分:2)

如果用户选中了编辑器,onNodeChange tinyMCE事件将会触发。使用tinyMCE的onMouseDown来检测点击。在这两个事件之间,您应该能够确定用户何时激活了编辑器。在主页面中使用$(body).click()来确定用户何时点击编辑器并使其模糊。

我也会回避将默认文本作为编辑器的实际值。相反,我会使编辑器的iframe / body透明,并将默认值放在绝对定位的div中。使用上面的触发器,只需要显示()/ hide()div,当你想要显示默认值[dis]时。

答案 1 :(得分:0)

嗯,狡猾的......

这是您可能想尝试的一个想法:

我们已经确定onActivate的工作正常,因此请将代码连接起来......现在,对于onDeactivate ...

tinyMCE将其内容存储在它替换的原始(现在隐藏)textarea中。这就是在发布表单时将内容发送到服务器的方式。

现在,为了模糊编辑器,用户必须点击页面上的其他内容。使用jQuery,您可以附加$("body").click()函数来检查隐藏文本区域的内容(使用$(id_of_hidden_textarea).val())。如果内容为空,请在textarea(使用val())和MCE实例(使用tinyMCE.setContent())中将内容设置为“在此处输入内容...”。

单击编辑器时,$("body").click()函数不会触发,因为它位于iframe中。