1

こんにちは、申し訳ありませんが、これは非常に大規模なシステムの一部であり、すべてを掲載するつもりはありません。何か不足している場合は、私に尋ねてください。

私はjQuerys ajaxForm http://jquery.malsup.com/form/ とCKEditor http://ckeditor.comを使用しています

CKeditor のドキュメントによると、jQuery アダプターは ajaxForm http://ckeditor.com/blog/CKEditor_for_jQueryで動作し、「エディター インスタンスとのコードの相互作用」セクションの下部にあります。

これで、すべてのコンテンツが AJAX を使用してページに読み込まれ、addonLoader という関数が渡されたデータで起動されます。これは、CKEditor を処理する関数のセクションです。

    // check there are not any instance's of CKEditor running
    $(".addonContent form textarea.editor").each(function(index, element) {
        $(this).ckeditor(function(){  this.destroy(); });
    });

    // add the content to the output area
    $(".addonContent").html(data);  

    // setup Ajax form values
    AJAXFormOptions = {
        success:       addonLoader
    };

    // activate ajaxForm on any forms from the data shown
    $(".addonContent form").ajaxForm(AJAXFormOptions);
// enable the content editor
$(".addonContent form textarea.editor").ckeditor({width:"800px"});

このコードを起動するために画像リンクによってフォームが送信されたとき

function submitForm(formID){
    (function($){
        $(".addonContent form textarea.editor").each(function(index, element) {
            $(this).ckeditor(function(e){
                this.updateElement();
            });
        });
        $(formID).submit(function(){    
            // prevent the browser redirect 
            return false;
        });
        $(formID).submit();
    })(jQuery)
}

formID が正しいことを確認しましたが、何らかの理由で、CKEditor 内に配置されたコンテンツでテキストエリアを更新しません。この問題があり、修正方法を知っている人はいますか?

4

1 に答える 1

1

this呼び出しに使用している のupdateElement()は、ckeditor オブジェクトではなく DOM ノードです。

あなたが提供したアダプターリンクでは、ドキュメントから次のようにエディターインスタンスにアクセスする方法を示しています:

 var editor = $('.jquery_ckeditor').ckeditorGet();

に変更this.updateElement()してみてください:

 $(this).ckeditorGet().updateElement()

これで、エディター インスタンスの更新を呼び出す必要があります

于 2012-03-07T01:22:05.200 に答える