我几周前开始使用CKEditor v3。在php项目中使用它。我一直在使用jquery(使用jquery适配器)和所有这些使用$ .ajax(因为无法处理错误)当使用jquery形式)提交,我认为一切都很好。
所以这里弹出一个案例,我需要使用普通表单机制来提交ckeditor内容和表单的所有其他信息。
令我惊讶的是内容是空的所以我开始谷歌,显然这是一个已知的问题。
我还没有看到任何可以让我将我的内容发布到php端的东西。所以我想出了一个解决方法。
我知道onclick总会在onsubmit之前触发,所以我写了这个。
function returntoSubmit(){
myForm = document.forms[0];
myForm.elements["content"].value = $("#content").val();// note that the textarea name and id are all the same "content"
}
// html here
<input type="submit" value="Save" onclick="returntoSubmit()" />
这对我有用。但是真的有点不舒服,是不是有更好的方法来解决这个问题?
由于
答案 0 :(得分:3)
我正在使用一些讨厌的遗留代码运行一个大型应用程序,并且需要在整个应用程序中尽可能非侵入性地运行的东西。在我的情况下,单独监听每个页面上的提交是不可行的,即使我这样做,我偶尔会遇到竞争条件,其中提交仍然发生在点击事件代码有机会完成之前。在全局范围内页面加载后运行时,以下似乎对我有用:
for(var i in CKEDITOR.instances) {
CKEDITOR.instances[i].on('blur', function() { this.updateElement(); });
}
答案 1 :(得分:2)
愿这个帮助
CKEDITOR.instances[content].getData()
答案 2 :(得分:0)
刚刚遇到这个问题......似乎更新所有textareas的最佳方式是:
for(var i in CKEDITOR.instances) CKEDITOR.instances[i].updateElement();
答案 3 :(得分:0)
我实际上添加了我自己的扭曲,因为我今天遇到同样的问题时效果很好。
我使用了你的函数调用,但是这样做我给textarea提供了ckeditor的ID:
function returnToSubmit() {
$('#ckeditor').val(CKEDITOR.instances['ckeditor'].getData();
}
答案 4 :(得分:0)
我在所有表单的jquery ready事件中使用了此代码:
$('form').on('submit',function(){
for(var i in CKEDITOR.instances) {
CKEDITOR.instances[i].updateElement();
}
});
稍后,我添加了另一个特定的表单提交事件处理程序,以为每个表单执行实际的自定义提交逻辑。