0

我正在尝试使用 AJAX 创建一个管理页面,因此当客户端更新 CKEDITOR 中的信息时,它不必将他带到新页面。使用 .val() 函数从输入字段中获取数据很容易,但是因为 textareas 没有即时更新,所以我不能使用相同的函数。据我所知,继承人:

// 这会将所有 textarea 标签替换为 CKEDITORS

<script type="text/javascript"> 
    CKEDITOR.replaceAll();
</script>

//这试图从输入和文本区域中获取所有数据

$(function() {
        $("#submit").click(function() {
            var newsTitle = $("#newsTitle").val();
            var editNews = CKEDITOR.instances.editNews.getData();
            var contactTitle = $("#contactTitle").val();
            var editContact = CKEDITOR.instances.editContact.getData();
            var linksTitle = $("#linksTitle").val();
            var editLinks = CKEDITOR.instances.editLinks.getData();

                $.ajax({
                   type: "POST",
                   url: "update.php",
                   data: 'newsTitle='+newsTitle+'&editNews='+editNews+'&contactTitle='+contactTitle+'&editContact='+editContact+'&linksTitle='+linksTitle+'&editLinks='+editLinks,
                   cache: false,
                   success: function(){
                        updated();
                    }

                 });    

            return false;
        });
    });

getData() 函数似乎可以工作,因为我使用警报对其进行了测试,并且它正在从编辑器中获取数据,但是一旦我尝试更新,它就无法工作......

有任何想法吗?

4

3 回答 3

3

此代码替换 textarea:

<script type="text/javascript">

CKEDITOR.replace( 'TEXTAREA_ID', {
    extraPlugins : 'autogrow',
    removePlugins : 'resize',
    entities : false
});

</script>

在 JS 文件中,这是代码,我使用的是 Jquery Validator Plugin:

$(document).ready(function(){

jQuery.validator.messages.required = "";

$("#FormID").validate({
    submitHandler: function(){

        var ContentFromEditor = CKEDITOR.instances.TEXTAREA_ID.getData();

        var dataString = $("#FormID").serialize();

            dataString += '&ContentFromEditor='+ContentFromEditor;          


        $.ajax({
        type: "POST",
        url: "Yourfile.php",
        data: dataString,
        cache: false,
        success: function(html){
            YOU WORK WITH THE RETURN HERE
       },
       error: function(xhr, ajaxOptions, thrownError){ 
            alert(xhr.responseText);
        }
     });

   return false;

    }
});

});

这是大多数时间产生错误的行:

CKEDITOR.instances.TEXTAREA_ID.getData();

在实例之后总是出现文本区域的 ID。

我有自己的 config.js,您可以从 ckeditor 网站或示例中获得。

于 2011-12-27T19:39:21.680 回答
1

有了这段代码,我的问题就解决了。我更新了运行 ckeditor 的字段,以便在序列化中看到。

$('#form').find('.class').each(function(index) {
    $(this).val(CKEDITOR.instances[$(this).attr('id')].getData());
});
于 2014-06-08T06:34:08.113 回答
1

标记一下用于 jQuery 的 CKEditor 函数/适配器

http://docs.cksource.com/CKEditor_3.x/Developers_Guide/jQuery_Adapter

因为设置和检索编辑器数据是一种常见的操作,所以 jQuery Adapter 还提供了专用的 val() 方法:

// Get the editor data.
var data = $( 'textarea.editor' ).val();
// Set the editor data.
$( 'textarea.editor' ).val( 'my new content' );
于 2010-07-07T12:02:47.187 回答