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>

bodyText残念ながら、Ajax リクエストはパラメーターを渡していないようです。

私は何を間違えましたか、または必要なものをどのように達成できますか?

ありがとうございました。

4

6 に答える 6

144

CKEDITOR に関連フィールドを更新させるには、最初に以下を呼び出す必要があります。

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

それで

HTML

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

とジャバスクリプト

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

私の場合、次のことが役に立ちました。フォームを差し押さえる前に、これらの2行を使用します。

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

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

私はこのようなことを試しました:

最初に id = "#myForm" を @Html.BeginForm に後で配置する必要がありました。これらをスクリプトを使用するスクリプト部分に配置しました。

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

そして、私は送信ボタンにこのようなことをしました=]そして、それは私にとってはうまく機能し、送信を2回押す必要はありません=]

<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 に答える