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

このコードはテキストエリアを置き換えます:

<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 が続きます。

ckeditor Web サイトまたは例から取得できる独自の config.js があります。

于 2011-12-27T19:39:21.680 に答える
1

jQuery の CKEditor 関数/アダプターを見てみましょう

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

エディター データの設定と取得は一般的な操作であるため、jQuery アダプターには専用の 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 に答える