无法从同一个AJAX TinyMCE textarea发布两次
我有一个可通过简单的AJAX / jQuery编辑按钮编辑的元素列表,效果很好。 但是当我第二次尝试编辑相同的场时,它不想打球。
- EDIT – AJAX返回一个包含MySQL内容的tinyMCE文本区域
- SAVE – AJAX将tinyMCE内容发布到MySQL并显示发布的内容
- 编辑(再次) – 像往常一样返回相同的tinyMCE textarea和内容
- 保存(再次) – 尝试第二次保存,返回错误: g.win.document为null
代码片段
var content = tinyMCE.get('content').getContent(); //get tinyMCE content $("#edititem").load("editItem.php", {content: content}); //jQuery post
解决方案 – 这就是我的工作方式:
编辑 – 编辑时,将tinyMCE控件添加到textarea
tinyMCE.execCommand("mceAddControl",true,'content');
保存 – 保存时,取下下次的控件
tinyMCE.execCommand('mceRemoveControl',false,'content');
我对FCKeditor比较熟悉,但我觉得它很相似。 TinyMCE具有mceAddControl命令来添加/创建编辑器实例。 你重新加载你的内容后,你是这样做的吗?
tinyMCE.execCommand('mceAddControl' ...
我想我会添加一个与上述解决方案结合使用的解决方案:
setTimeout(function() {tinyMCE.execCommand("mceAddControl", true, "content");}, 5);
无论出于何种原因,我不确定这是DOM操作的时间问题还是别的,但是微小的延迟会让生活变得更好。 但是setTimeout()
不能与使用jQuery .each()
方法结合使用,例如:
$("textarea").each(function(index) { tinyMCE.execCommand("mceAddControl", false, $(this).attr("id")); });
这必须是一个完全不同的时间问题。
Anyhoo,我以为我会分享这些调查结果,因为我相信其他人甚至可能会再次发现这个post会有所帮助。
$(tinyMCE.editors).each(function(){ tinyMCE.remove(this); });
对于tinymce 3.2.x,使用以下命令删除IE8或任何其他浏览器中的tinyMCE实例。 由于tinymce.execCommand函数使输入字段在IE8中不可编辑。
tinyMCE.remove(editor); //editor is instance of tinymce editor and not editor id
这将修复“权限被拒绝”错误,而不会禁用同一页面中的其他输入字段。
- 如何使用Deferred顺序运行代码?
- 如何重新加载javascript代码块
- 我可以使用jQuery的AJAX向Google Spreadsheets提交表单信息吗?
- jQuery,带有url数组的$ .ajax
- 单击按钮时更新div,单击另一个按钮生成按钮时
- 如何在表单中的输入类型=“文件”中添加图像并在同一表单上提交它们之后生成缩略图图像
- Ajax调用没有调用服务器端,并且在httpxx中显示错误为“在ajax post调用中加载内容错误(NS_ERROR_DOCUMENT_NOT_CACHED)”
- 如何覆盖jQuery promise回调
- 使用JSON从AJAX和JQuery调用简单的Web服务(.asmx文件) – 解析错误