web-dev-qa-db-fra.com

Événement pour le contenu du ckeditor modifié

Si possible, comment pouvons-nous réagir au cas où le contenu de ckeditor serait modifié? Par exemple, il y a du texte déjà inséré dans le contenu du ckeditor, alias textarea, lorsque la page est ouverte. Ensuite, je tape quelque chose de plus ou supprime une partie de ce texte. Y at-il un événement déclenché auquel je peux arriver pour modifier une variable lorsque le texte est modifié?

J'ai ceci pour textareas régulier:

$("input,textarea").on("input", function () {
    booleanvar= true;
});

Vu une solution possible quelque part qui avait ceci:

$('.ckeditor').ckeditorGet().on('key', function (e) {
    //some code
});

Essayé, mais n'a pas fonctionné. Et oui, je sais que le texte de mon ckeditor a "ckeditor" comme classe, donc ce n’est pas la raison pour laquelle cela ne fonctionne pas.

Donc, quelque chose comme ces exemples que je peux utiliser pour obtenir une sorte d’événement de ckeditor modifié en texte?

9
Micael Florêncio

Oui, il y a la très utile change même que vous pouvez écouter. Documentation ici: http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-change

Utilisez-le par exemple comme suit (modifiez editor1 en votre instance d'éditeur):

CKEDITOR.instances.editor1.on('change', function() { 
    console.log("TEST");
});
26
Nenotlep

Il m’aide beaucoup, pour l’échange deCKEDITOR.

<textarea id="ckeditor_textarea " name="ckeditor_textarea ">Add Yore Data</textarea>

<script type="text/javascript">
var editor = CKEDITOR.replace( 'ckeditor_textarea ', {});
// editor is object of your CKEDITOR
editor.on('change',function(){
    console.log("test");
});
</script>
3
Dave

Si vous avez beaucoup de ckeditor (version 4) dans une page, vous pouvez utiliser ce code:

CKEDITOR.on('instanceCreated', function(event) {
 var editor = event.editor,
 element = editor.element;
 editor.on('change', function() {
 console.log(element.getId());
 });
 });
0