2

ckeditorに問題があります。現在のバージョンをダウンロードし、次のようにフォームに含めました。

<form action="/news.php?frame=edit&amp;id=185" enctype="multipart/form-data" method="post" accept-charset="utf-8">
<textarea class="edit" name="news_content" id="news_content" rows="30" cols="32" style="width:95%;">{$news_content}</textarea>
<script type="text/javascript" src="ext/ckeditor/ckeditor.js"></script>
<script type="text/javascript">
     CKEDITOR.replace( 'news_content' )
</script>
<input type="submit" accesskey="s" value="Eintragen (Alt+S)" class="button">
</form>

正しくロードされ、エディターを使用して変更を加えることができます。ただし、通常の送信ボタンを使用してフォームを送信すると (ここでは AJAX または JS はまったく使用されません)、$_POST 配列に「news_content」というエントリはなく、データを含む他の要素もまったくありません。

通常の送信ボタンを使用してフォームを送信した後、コンテンツをどのように利用できますか?

前もって感謝し、よろしくダニエル

4

4 に答える 4

9

実際のフォーム フィールドを更新するには、関数を実行する必要があります。同じ問題でコードを見つけることができました。実際のフォーム データは、関数を実行して CKEditor データをフォーム フィールドに移動するまで更新されません。

function updateAllMessageForms()
{
    for (instance in CKEDITOR.instances) {
            CKEDITOR.instances[instance].updateElement();
    }
}
于 2013-07-07T22:12:08.097 に答える
0

私の知る限り、CKEditor は自動的にこれを行います。同じ問題に遭遇しました。テキストエリアの POST 変数が空白でした。検証を行ったJavaScriptのonsubmit関数にエラーがあったことが判明しました。JavaScript でエラーが発生し、フォームが送信されますが、そのエラーが原因で、元のテキストエリアに入力する CKEditor コードが起動しませんでした。

私はソースコードを見回しましたが、これは送信時に元のテキストエリアを更新すると思います:

// Integrate with form submit.
if ( editor.config.autoUpdateElementJquery && $element.is( 'textarea' ) && $( element.form ).length ) {
    var onSubmit = function() {
        $element.ckeditor( function() {
                editor.updateElement();
        } );
    };

    // Bind to submit event.
    $( element.form ).submit( onSubmit );

    // Bind to form-pre-serialize from jQuery Forms plugin.
    $( element.form ).bind( 'form-pre-serialize', onSubmit );

    // Unbind when editor destroyed.
    $element.bind( 'destroy.ckeditor', function() {
        $( element.form ).unbind( 'submit', onSubmit );
        $( element.form ).unbind( 'form-pre-serialize', onSubmit );
    } );
}
于 2013-11-05T19:53:19.967 に答える