CKEditor 更新 texarea 值时出现问题
在我的 php 程序中,我在页面加载时以常规方式显示输入表单,或者使用 ajax 调用在对话框中显示输入表单。
有两种方法可以从文本区域创建 CKEditor。使用 jQuery
$("#textareaid").ckeditor();
或
window["textareaid"] = CKEDITOR.replace("textareaid");
两种方法都会在页面加载时或 ajax 调用后创建富文本编辑器来代替文本区域。没关系。
这里开始出现问题。在这些情况下,CKEditor 启动时不会出现任何控制台错误,但它永远不会更新文本区域值,并且始终发送旧值。
1)如果我在页面加载时创建文本区域并使用 $("#textareaid").ckeditor();
。 CKEditor 启动正常,没有任何控制台错误,但在常规表单提交上,发送的值为空(旧值)。
2)如果我在ajax调用后创建textarea并使用 window["textareaid"] = CKEDITOR.replace("textareaid");
。 CKEditor 再次正确启动,但如果我执行 $("form").serialize() 并警告结果,我会看到 textarea 值为空(旧值)。
我现在无法创建演示页面并上传,我知道如果没有我的代码,没有人会尝试复制此问题(至少我不会,因为我很懒)
我将准备一个演示页面来复制这个问题对你们来说是个问题,但在那之前我想问这里是否有人遇到同样的问题并知道原因或找到解决方案?
谢谢
In my php program I display input forms either regular way on page load or in a dialog box using ajax calls.
There are two methods to create a CKEditor from textarea. Either to use jQuery
$("#textareaid").ckeditor();
or
window["textareaid"] = CKEDITOR.replace("textareaid");
Both methods creates my rich text editor inplace of my textarea in both cases either on page load or after an ajax call. That's fine.
Here starts the problems. In these conditions CKEditor initiates without any console errors, but it never updates textarea value and always sends old value.
1) If I create my textarea on page load and use $("#textareaid").ckeditor();
. CKEditor initiates ok without any console errors but on regular form submit, the sent value is empty (old value).
2) If I create my textarea after an ajax call and use window["textareaid"] = CKEDITOR.replace("textareaid");
. Again CKEditor initiates correctly but if I do $("form").serialize() and alert the result I see that textarea value is empty (old value).
I can't create a demo page and upload right now and I know that no one will try to replicate this issue without my codes (at least I wouldn't because I'm so lazy)
I'll prepare a demo page to replicate this issue for you guys but until then I'm asking if someone here faced the same problem and know the reason or found a solution?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您在 eaxmple 中调用“您的实例”,那么您应该没问题
在
CKEDITOR.replace()
函数中使用的内容,因为这就是您之前 序列化表单。
几天前遇到了完全相同的问题:)
You should be ok if you call:
'your instance' in the eaxmple would be simply
textareaid
since that's what you're using in theCKEDITOR.replace()
functionbefore you serialize the form.
Had the exact same problems a couple of days ago :)
我刚刚经历了同样的症状,它似乎与使用 id 来选择文本区域的对象而不是使用 jQuery 适配器的名称有关。
jQuery 适配器的参考资料确实指出,当它是一个文本区域时,它会自动发送回该值,因此它可能无法正确验证为带有 jquery
$("#myTextarea").ckeditor(); 的文本区域。
如果您想保留 id 选择器,可以选择使用隐藏字段以及提交表单时将值发送到的最终表单字段名称。
$("#myHiddenField").val($("#myTextarea").val());
I just experienced this same symptom and it seems to be tied to using an id to select the object for the textarea instead of name with jQuery adapter.
The reference material on the jQuery adapter does state that when it is a textarea it will automatically send this value back, so it may not validate correctly as a textarea with a jquery
$("#myTextarea").ckeditor();
If you want to keep the id selector, an option is to use a hidden field with the final form field name that you send the value to when you submit the form.
$("#myHiddenField").val($("#myTextarea").val());
通过替换加载编辑器后,您可以添加此行
after loading editor by replace, you may add this line