2010-02-16 15 views
8

Estoy desarrollando un complemento para CKEditor que necesita realizar algunos cambios en el contenido del editor inmediatamente antes de guardarlo. En FCKeditor, logré esto usando el evento , pero aún no he podido encontrar una manera equivalente de hacerlo en CKEditor. Tenía la esperanza de que hubiera un evento adecuado para conectar, pero no parece haberlo. ¿Alguien sabe de una manera de hacer esto?Actualizar el contenido del editor inmediatamente antes de guardarlo en el complemento CKEditor

+0

Qué evento 'save'/función está usando? El botón "guardar"? –

+0

Sí. El complemento será utilizado por los propietarios del sitio que ya hayan configurado CKEditor como lo hayan considerado conveniente, por lo que preferiría mantener mi complemento lo más limpio posible, lo que significa que no reemplazaré el botón de guardar estándar si es posible. Miré la fuente y mi mejor opción parece agregar un manejador de eventos 'submit' al formulario que contiene el editor, pero esto apenas califica como limpio. –

Respuesta

6

Puede usar el evento getData, pero tenga cuidado porque también está activado para usos internos.

me he presentado http://dev.fckeditor.net/ticket/5254 para recrear el evento anterior

+0

¿Junto con la creación de mi propio controlador para el evento de envío del formulario? –

+1

Esa sería una solución alternativa. De hecho, ese es el que elegiría en este momento porque puede ser más fácil manejarlo correctamente hasta que CKEditor genere un evento apropiado (realmente no sé lo que quieres hacer, así que supongo que debe ser algo complejo que debe hacerse solo después de actualizar el área de texto) – AlfonsoML

+0

Mi complemento permite a un usuario incorporar partes del contenido almacenadas en un servidor diferente al contenido HTML principal. Estos se representan en el contenido del editor como imágenes de marcador de posición para evitar que se editen en CKEditor. Inmediatamente antes de que el editor guarde, quiero reemplazar estas imágenes de marcador de posición con el contenido HTML que representan, y cuando el editor cargue, quiero convertir el HTML especial en marcadores de posición (lo que puedo hacer con los eventos existentes). Quizás hay otro enfoque que debería tomar? –

1

Como el enlace de arriba no tiene realmente la solución en caso OnAfterLinkedFieldUpdate substitude He escrito un breve post sobre cómo ir a su alrededor.

Aquí es la forma:

<form id="my_form" action="submit.php" method="post" name="my_form"> 
    <textarea id="my_text" name="my_text"></textarea> 
    <input id="submitForm" type="submit" name="submitForm" value="Submit" /> 
</form> 

JavaScript:

var formSubmitted = false; 
$("#submitForm").live('click', function(event) { 
    if (formSubmitted === true) { 
     formSubmitted = false; 
     return; 
    } 
    event.preventDefault(); 
    //put here function to edit content == OnAfterLinkedFieldUpdate 
    var editor = CKEDITOR.instances.my_text; 
    var html = editor.getData(); 
    html.replace(searchvalue, newvalue); 
    editor.setData(html); 
    formSubmitted = true; 
    $(this).trigger('click'); 
}); 

El código es here

Cuestiones relacionadas