CKEditor向表单提交空内容。

时间:2011-12-03 07:57:09

标签: javascript forms ckeditor

我几周前开始使用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()" />

这对我有用。但是真的有点不舒服,是不是有更好的方法来解决这个问题?

由于

5 个答案:

答案 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();

http://cksource.com/forums/viewtopic.php?f=11&t=15877

答案 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();
  }
});

稍后,我添加了另一个特定的表单提交事件处理程序,以为每个表单执行实际的自定义提交逻辑。