2014-02-27 3 views
7

Mit viel Hilfe habe ich den CKEditor endlich dazu gebracht, den zugehörigen Textbereich zu aktualisieren. See the post here.ckeditor content in textarea bei change event - multiple ckeditors auf form

Allerdings bin ich ratlos, wie der CKEditor jeden zugeordneten Textbereich zu aktualisieren, wenn es mehr als 1 CKEditor auf dem Formular gibt.

Hier ist die Jquery, die ich derzeit habe. Es aktualisiert nur den letzten CKEditor zugehörigen Textbereich auf dem Formular:

for (var i in CKEDITOR.instances) { 
     CKEDITOR.instances[i].on('change', function() { CKEDITOR.instances[i].updateElement() }); //update the relative hidden textarea. 
    } 

Wie aktualisiere ich jeden zugehörigen CKEditor Textbereich, wenn ich 5 oder 10 CKEditors auf dem Formular?

Antwort

12

Für jede Instanz des ckeditor, die Sie auf Ihrer Seite installieren möchten, fügen Sie den folgenden Code in Ihre jquery Skript:


CKEDITOR.instances['id_of_text_area'].on('change', function() { CKEDITOR.instances['id_of_text_area'].updateElement() }); 


Das obige JavaScript sollte den Code ersetzen, den ich in der ursprünglichen Frage angezeigt habe.

Ich hoffe, dass dies jemand helfen wird.

+1

Schließlich sind Sie die einzige Person, die eine Antwort über das Internet veröffentlicht hat. – dspacejs

3

Der Code, den Sie geschrieben haben, wird die Textfläche von nur einem CKEditor gleichzeitig aktualisieren, da ein Änderungsereignis zu jedem CKEditor hinzugefügt wird. Dadurch wird immer das letzte Element aktualisiert, das geändert wurde.

So wie ich updation mehrerer CKEditors handhaben ist durch diesen Code verwenden, wenn mein Formular

for (var i in CKEDITOR.instances) { 
    CKEDITOR.instances[i].updateElement(); 
} 
+0

Danke, aber ich benötige die CKEditor jeden zugehörigen Textbereich zu aktualisieren, da die Benutzerdaten in den CKEditor tritt, wenn es mehr als 1 CKEditor auf dem Formular - nicht wenn ich das Formular abschicke. Irgendwelche Ideen? – user3354539

4

Falls Sie Textfeldelemente von Klassennamen, nur tun dies ersetzen:

CKEDITOR.on('instanceReady', function(event) { 
    var editor = event.editor; 

    editor.on('change', function(event) { 
     // Sync textarea 
     this.updateElement(); 
    }); 
});