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 回答
2

这对我有用:

if( $('.ckeditor').length > 0){
    $('form').on('submit', function(e){
        for (instance in CKEDITOR.instances) {
            $('#' + instance).val(CKEDITOR.instances[instance].getData());
        }
    });
}
于 2018-10-30T15:57:56.630 回答
1

我在 jquery ui 对话框中遇到了同样的问题。这段代码对我有用:

    function updateAllMessageForms(){
         for (instance in CKEDITOR.instances) {
             CKEDITOR.instances[instance].updateElement();
         }
    }
于 2014-05-03T10:46:39.227 回答
0

据我所知,CKEditor 会自动为您执行此操作。我遇到了同样的问题,我的 textarea 的 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 回答