CKEditor在更新texarea的值时遇到问题



在我的php程序中,我以常规方式在页面加载或使用ajax调用在对话框中显示输入表单。

有两种方法可以从textarea创建CKEditor。或者使用jQuery
$("#textareaid").ckeditor();

window["textareaid"] = CKEDITOR.replace("textareaid");

这两种方法都在页面加载或ajax调用后创建富文本编辑器来代替文本区域。很好。

问题开始了。在这些情况下,CKEditor启动没有任何控制台错误,但它永远不会更新文本区域的值,总是发送旧值。

1)如果我创建我的文本区域页面加载和使用$("#textareaid").ckeditor();。CKEditor初始化ok,没有任何控制台错误,但在常规表单提交时,发送的值为空(旧值)。

2)如果我创建我的文本区域后ajax调用和使用window["textareaid"] = CKEDITOR.replace("textareaid");。CKEditor再次正确启动,但如果我执行$("form").serialize()并警告结果,我看到textarea值为空(旧值)。

我现在不能创建一个演示页面并上传,我知道没有我的代码没有人会试图复制这个问题(至少我不会,因为我很懒)

我将准备一个演示页面来复制这个问题,但在此之前,我想问这里是否有人遇到过同样的问题,知道原因或找到了解决方案?

谢谢

如果您调用:

 CKEDITOR.instances[your instance].updateElement();

'您的实例'在示例中将是简单的textareaid,因为这是您在CKEDITOR.replace()函数中使用的

几天前有完全相同的问题:)

我刚刚经历了同样的症状,它似乎与使用id来选择文本区域的对象而不是使用jQuery适配器的名称有关。jQuery适配器的参考资料确实指出,当它是一个文本区域时,它会自动将此值发送回,因此它可能无法正确地验证为jQuery $("#myTextarea").ckeditor();

的文本区域。

如果你想保留id选择器,一个选项是使用一个隐藏字段,其中包含提交表单时发送值的最终表单字段名。$("#myHiddenField").val($("#myTextarea").val());

通过replace加载编辑器后,您可以添加以下行

CKEDITOR.instances.textAreaClientId.on('blur', function() CKEDITOR.instances.textAreaClientId.updateElement();});

最新更新