0

私は動的なページの読み込みを行っており、ページにはそれぞれCKEditorで編集フォームを開くリンクがあります

これらのフォームを呼び出すための私の JavaScript 関数:

function editProduct(id) {
    $("#add-product").hide();
    if (CKEDITOR.instances['editor']) {
        CKEDITOR.remove(CKEDITOR.instances['editor']);
    }
    $("#edit-product").load(homeurl+"/admin/edit/product",{id:id},function(){
        $.getScript(homeurl+"/js/jquery.MultiFile.js");
        $("#edit-product").find("#editor").ckeditor();
        $("#edit-product").show();
    });
}

そのため、CKEditor インスタンスが存在する場合はそれを破棄します。最初のページの読み込みとフォームを開くと、すべてが正常に機能しますが、編集フォームを開いた後に他のリンクをクリックすると、別のセクションが開き、CKEditor が表示されますが、POST データは送信されません。jQuery を使用してデータを送信することはありません。次のように iframe にデータを渡します。

<form action="/admin/add/product" enctype="multipart/form-data" method="post" target="upload_iframe">

データを送信した後、この JavaScript 関数を使用して動的コンテンツを更新します (エディター インスタンスもチェックして破棄します)。

function showPage(page) {
    act_page = page;
    $("#dynamic-content").load(homeurl+"/admin/getpage",{page:page},function(){
        if (CKEDITOR.instances['editor']) { 
            CKEDITOR.remove(CKEDITOR.instances['editor']); 
        }
        $('html,body').find('#editor').ckeditor();
    });
}
4

1 に答える 1

1

そのため、CKEditor インスタンスが存在する場合はそれを破棄します。

いいえ、エディターを破壊しているわけではありません。クリーンアップ ジョブの一部のみを実行するeditor.destroy()private の代わりに method を使用します。CKEDITOR.remove

あなたが持っている必要があります:

if (CKEDITOR.instances.editor) {
    CKEDITOR.instances.editor.destroy();
}
于 2013-05-20T17:38:10.000 に答える