51

我正在使用 CKEditor、jQuery 和jQuery 表单插件,我想通过 Ajax 查询提交 CkEditor 表单的内容。这是我的代码:

<form id="article-form" name="article-form" method="post" action="/myproject/save">
  <textarea name="bodyText" style="visibility: hidden; display: none;"></textarea>
  <script type="text/javascript">
    CKEDITOR.replace('bodyText');
  </script>

  <a onClick="$("#article-form").ajaxSubmit();">Submit</a>

</form>

不幸的是,Ajax 请求似乎没有传递bodyText参数;

我做错了什么或者我怎样才能达到我的需要?

谢谢你。

4

6 回答 6

144

您需要先调用以下命令,以使 CKEDITOR 更新其相关字段..

for ( instance in CKEDITOR.instances )
    CKEDITOR.instances[instance].updateElement();

所以

HTML

<a onClick="CKupdate();$('#article-form').ajaxSubmit();">Submit</a>

和 javascript

function CKupdate(){
    for ( instance in CKEDITOR.instances )
        CKEDITOR.instances[instance].updateElement();
}
于 2010-07-15T14:31:30.823 回答
18

这对我最有效:beforeSerialize 回调

$('form#description').ajaxForm({
    beforeSerialize:function($Form, options){
        /* Before serialize */
        for ( instance in CKEDITOR.instances ) {
            CKEDITOR.instances[instance].updateElement();
        }
        return true; 
    },
    // other options
});
于 2012-02-10T09:11:13.653 回答
8

如果您使用jQuery 表单插件,您可以使用 beforeSubmit 选项以获得更优雅的解决方案:

$("#form").ajaxForm({
    beforeSubmit:  function()
{
        /* Before submit */
    for ( instance in CKEDITOR.instances )
    {
        CKEDITOR.instances[instance].updateElement();
    }
},

  // ... other options
});
于 2011-08-01T12:58:03.590 回答
6

在我的情况下,以下对我有帮助,我只是在序列化表单之前使用这两行。

  for ( instance in CKEDITOR.instances )
       CKEDITOR.instances[instance].updateElement();

  var data = $('#myForm').serializeArray();
于 2012-07-12T10:08:29.937 回答
4

我试过这样的事情:

首先,我必须在 @Html.BeginForm 上放置一个 id = "#myForm" ,然后将它们放在我的脚本部分中,在我使用脚本的地方:

<script type="text/javascript">
    $(document).ready(function CKupdate() {
        $('#myForm').ajaxForm(function () {
            for (instance in CKEDITOR.instances) {
                CKEDITOR.instances[instance].updateElement();
            }
        });       
    });
</script>

然后我为我的提交按钮做了这样的事情=],它对我来说很好,不再按两次提交=]

<button type="submit" id="submitButton" onclick="CKupdate();$('#myForm').ajaxSubmit();">Submit</button>
于 2012-12-03T10:55:36.823 回答
1

我只是这样做:

$('#MyTextArea').closest('form').submit(CKupdate);

        function CKupdate() {
            for (instance in CKEDITOR.instances)
                CKEDITOR.instances[instance].updateElement();
            return true;
        }
于 2011-04-22T07:28:16.390 回答