【发布时间】:2013-01-14 01:16:02
【问题描述】:
我遇到了一个问题,我的页面上有一个带有 CKEditor 的按钮。 按下按钮时,我想将文本附加到编辑器。
我使用了以下代码:
$('#mtxDescription').append($(this).data('key'));
CKEDITOR.instances['mtxDescription'].updateElement();
但是这不起作用。编辑没有反映更改。但是,当我检查编辑器时,我发现 textarea 确实显示了附加的适当文本,只是编辑器没有显示它。有谁知道解决这个问题的方法。另外,以防万一有人想知道,我的页面中确实引用了 jquery CKEditor 适配器脚本。
另外,如果一个有点相关但单独的问题。
我有一个下拉列表,允许用户在页面上显示的文本区域(CKEDitor WIZIWIG)和再次返回正常文本区域之间切换。但是,如果不从字面上刷新页面,我似乎无法做到这一点,我想通过 javascript/jquery 来做到这一点,这样我就不必在更改下拉选择时刷新页面。我已经尝试过内置的销毁方法。它似乎没有在视觉上做任何事情,编辑器不会恢复到简单的文本区域。
以防万一您需要更多代码,以下是我的 HTML 页面的样子:
<textarea id="mtxDescription" name="mtxDescription"></textarea>
这是我如何初始化编辑器
CKEDITOR.replace('mtxDescription', {
sharedSpaces: { top: 'ed-top'}
});
【问题讨论】:
-
首先你不能附加到一个文本区域,你必须使用
val()来设置它的值。您可以通过 ckEditor API 完成您描述的所有操作,包括更新编辑器 html 和View Source以切换 textarea/WYSIWYG -
val 也不起作用。您可以附加到文本区域,至少在 Firefox 中,因为我以前做过。另外,我不想切换查看源选项,我真的希望它再次成为标准文本区域。
-
切换
View Source显示 textarea,我强烈反对将 append 作为跨浏览器的做法.. 它不起作用 -
无论如何...,我将使用 val 而不是 append。但它仍然没有显示在编辑器中。 textarea 由 jquery 更新,因为我可以看到 firebug,但编辑器没有显示更改。我需要一些可以刷新编辑器的东西。
-
我能够通过使用以下代码而不是使用 jQuery CKEDITOR.instances.mtxDescription.insertHtml($(this).data('key')) 来解决这个问题我仍然需要一种方法在运行时删除编辑器。
标签: javascript jquery textarea ckeditor