2016-05-05 7 views
2

Ich bin dabei, auf CKEditor Version 4.5.8 zu aktualisieren. Ich verwende jQuery, um auf die CKEditor-API zuzugreifen.CKEditor SetData funktioniert nicht in Version 4 -

Das Textfeld des Editors wird nicht aktualisiert. Gibt es eine Konfigurationsoption, die ich einstellen muss?

Html:

<textarea name="mck_1" id="mck_1"> Enter text. </textarea> 
<script> CKEDITOR.replace('mck_1'); </script> 

Javascript:

CKEDITOR.instances.mck_1.setData("Hello"); 

Wie kann ich das Debuggen? Muss ich das display/textarea explizit aktualisieren?

Wenn ich versuche, die Textarea in Firebug manuell zu aktualisieren, heißt es "undefined".

CKEDITOR.instances.mck_1.setData("hi"); 
undefined 

Es gibt eine Menge von Fragen zur früheren Versionen von CKEditor in Stackoverflow „setData nicht funktioniert“, aber keine der vorgeschlagenen Lösungen gibt es für mich arbeiten.

Hilfe!

MMiz

EDIT: erkannte ich die erste "setData" auf das Textfeld tatsächlich funktioniert. Es folgt der zweite, der nicht angezeigt wird. Von diesem thread

1: http://ckeditor.com/forums/Support/Second-Time-jQuery-Doesnt-Work es scheint, als gäbe es etwas Timing Sache. Aber so weit ich gekommen bin.

+0

warum Sie Einstellung machen es ist so komplex und wo die Editor-ID, und was genau Sie versuchen, zu tun – Noni

+0

@noni - Ich versuche, Daten mit jQuery in den Editor einzugeben. Die ID des Editors lautet "mck_1". – user1072910

+0

Wo rufst du setData an? Vielleicht liegt es daran, dass das Textfeld in eine ckeditor-Instanz umgewandelt wurde? Fügen Sie zum Testen eine Schaltfläche auf Ihrer Seite hinzu, deren onclick-Ereignis auf 'CKEDITOR.instances.mck_1.setData ('Hello')' gesetzt ist und sehen Sie, was passiert, wenn Sie auf die Schaltfläche klicken, nachdem der Editor vollständig geladen wurde. – Atzmon

Antwort

0

Wie sich herausstellte, war die Antwort in der CKEditor-Dokumentation (ja, ich weiß - RTFM zuerst). Die Ursache für dieses Verhalten liegt darin, dass die setData-Methode asynchron ist und Sie entsprechend codieren müssen.

http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setData

Zitat: „Beachten Sie, dass diese Methode asynchron Der Callback-Parameter muss verwendet werden, wenn die Interaktion mit dem Editor nach dem Einstellen der Daten benötigt wird.“

In meinem Fall, da ich versuche, Data zweimal hintereinander zu setzen, muss ich definitiv einen Rückruf haben. Es funktioniert jetzt.

0
$('textarea').each(function() { 
    var $textarea = $(this); 
    CKEDITOR.instances[$textarea.attr('name')].setData($textarea.val()); 
}); 

instaed der Daten von ckeditor bekommen und zurück zum Editor nutzen TextArea- und iterieren und alle Daten zu erhalten und auf jeden ckeditor ,,, vor Iterierte erstellen Instanz von CKEditor