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

在谷歌搜索并浏览 TinyMCE 的 wiki 后,看起来有 激活时停用时 应该部分执行此操作的事件;然而,onDeactivate 的 wiki 页面有一个免责声明,指出它不是真正的“模糊”方法,而且我无法让 onActivate 事件正常工作(至少使用 FF 3.5)。

还有其他人找到解决这个问题的方法吗?我正在使用库存的 TinyMCE 安装,并为我正在构建的网站的其他 JS 任务加载了 jQuery,因此,如果 TinyMCE API 中没有可用的内容,我愿意接受一些 jQuery 魔法来实现这一点。

谢谢,塞思

有帮助吗?

解决方案

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

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

其他提示

嗯嗯,有点棘手……

您可能想尝试以下一个想法:

我们已经建立了 onActivate 工作正常,所以连接代码......现在,为了 onDeactivate...

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top