Ckeditor actualización textarea

Estoy intentando que el ckeditor funcione. Obviamente, no hace uso del área de texto así que al enviar el formulario, no envíe el texto en el editor. Beceause Hago uso de asociaciones polimórficas, etc. No puedo hacer una función de envío para obtener el valor del área de texto (cuando se envía el formulario).

Así que encontré esta pregunta: Usar jQuery para tomar el contenido del iframe de CKEditor

con algunas muy buenas respuestas Las respuestas publicadas allí mantienen el texto actualizado. ¡Eso es muy bonito y justo lo que necesito! Desafortunadamente no puedo hacer que funcione. ¿Alguien sabe por qué (por ejemplo) esto no funciona?

Tengo un área de texto (Rails, pero simplemente se traduce en un área de texto normal):
'ckeditor', :rows => 3 %>

Y el siguiente js:

 if(CKEDITOR.instances.ckeditor ) { CKEDITOR.remove(CKEDITOR.instances.ckeditor); } CKEDITOR.replace( 'ckeditor', { skin : 'kama', toolbar :[['Styles', 'Format', '-', 'Bold', 'Italic', '-', 'NumberedList', 'BulletedList', 'Link']]}); CKEDITOR.instances["ckeditor"].on("instanceReady", function() { //set keyup event this.document.on("keyup", CK_jQ); //and paste event this.document.on("paste", CK_jQ); } function CK_jQ() { CKEDITOR.instances.ckeditor.updateElement(); } 

Obtengo el siguiente “error” en mi firebug.
missing ) after argument list [Break on this error] function CK_jQ()\n

lo has descubierto?

Estoy usando CKEditor versión 3.6.1 con jQuery form submit handler. Al enviar el textarea está vacío, lo que para mí no es correcto. Sin embargo, hay una solución fácil que puede usar, suponiendo que todas las áreas de texto de CKEditor tengan el ckeditor de la clase css.

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

Ejecute lo anterior antes de hacer su envío, es decir. validación de formulario.

Antes de enviar hacer:

 for(var instanceName in CKEDITOR.instances) CKEDITOR.instances[instanceName].updateElement(); 

Combinación de todas las respuestas anteriores en una.

Cree un nuevo archivo custom.js y agregue esto:

 CKEDITOR.on('instanceReady', function(){ $.each( CKEDITOR.instances, function(instance) { CKEDITOR.instances[instance].on("instanceReady", function() { this.document.on("keyup", CK_jQ); this.document.on("paste", CK_jQ); this.document.on("keypress", CK_jQ); this.document.on("blur", CK_jQ); this.document.on("change", CK_jQ); }); }); }); function CK_jQ() { for ( var instance in CKEDITOR.instances ) { CKEDITOR.instances[instance].updateElement(); } } 

No tiene que preocuparse por el nombre del área de texto, simplemente agregue una clase ckeditor en el área de texto, lo anterior y listo.

Gracias @JohnDel por la información, y uso onchange para que actualice cada cambio.

 CKEDITOR.on('instanceReady', function(){ $.each( CKEDITOR.instances, function(instance) { CKEDITOR.instances[instance].on("change", function(e) { for ( instance in CKEDITOR.instances ) CKEDITOR.instances[instance].updateElement(); }); }); }); 

ADD Function JavaScript para la actualización

 function CKupdate() { for (instance in CKEDITOR.instances) CKEDITOR.instances[instance].updateElement(); } 

Es trabajo. Guay

Solo agrega

 CKEDITOR.instances.textAreaClientId.on('blur', function(){CKEDITOR.instances. textAreaClientId.updateElement();}); 

donde textAreaClientId es su nombre de instancia

Saludos

 CKEDITOR.instances["ckeditor"].on("instanceReady", function() { //set keyup event this.document.on("keyup", CK_jQ); //and paste event this.document.on("paste", CK_jQ); }) 

Todas las respuestas anteriores se centran en cómo solucionar este error, pero quiero tomar la respuesta sobre lo que me causa este error

Tuve un

  

cambiado a

  

Cambié el valor de atributo de clase a cualquier cosa que no sea ckeditor y el error de auge desapareció.

Espero que ayudes

En carga:

 $(function () { setTimeout(function () { function CK_jQ(instance) { return function () { CKEDITOR.instances[instance].updateElement(); }; } $.each(CKEDITOR.instances, function (instance) { CKEDITOR.instances[instance].on("keyup", CK_jQ(instance)); CKEDITOR.instances[instance].on("paste", CK_jQ(instance)); CKEDITOR.instances[instance].on("keypress", CK_jQ(instance)); CKEDITOR.instances[instance].on("blur", CK_jQ(instance)); CKEDITOR.instances[instance].on("change", CK_jQ(instance)); }); }, 0 /* 0 => To run after all */); });