Pregunta

Estoy usando CKEditor en un área de texto y el plugin de validación de jQuery ( http: //bassistance.de/jquery-plugins/jquery-plugin-validation/ )

Con el plugin de jQuery que es posible marcar un campo como vacío o se requiera. Cuando un campo, por ejemplo, "Nombre del producto" está vacío el campo será marcado como no válido al presentar el formulario.

Sin embargo, mientras se escribe en un "nombre de producto", el campo será automáticamente marcada como válida mientras se escribe. Eso está muy bien, pero yo quiero tener la misma con mi área de texto CKEditor habilitado. Todo funciona muy bien con un área de texto sin formato (al escribir texto, el campo se hace válido), pero esto ya no funciona después de añadir CKEditor al área de texto.

A partir de entonces, usted tiene que hacer clic en el botón de envío antes de que el área de texto CKEditor se re-validada.

¿Alguna idea sobre cómo puedo hacer este trabajo?

Muchas gracias por su ayuda, stackoverflow ha sido de gran ayuda en los últimos días!

ACTUALIZACIÓN:

He intentado la solución de la rosca que me dio, pero no funciona: Usando jQuery para agarrar el contenido del iframe de CKEditor

Tengo:

CKEDITOR.instances["page_content"].document.on('keydown', function(event)
                {
                    CKEDITOR.tools.setTimeout( function()
                    { 
                        $("#page_content").val(CKEDITOR.instances.page_content.getData()); 
                    }, 0);
        });

pero eso me mantiene dando: "CKEDITOR.instances.page_content.document está definido"

El ID de mi textare es "PAGE_CONTENT"

Esto funciona bien después de hacer clic en el botón, pero como ves que necesito para desencadenar el evento KeyDown de alguna manera

$("#btnOk").click(function(event) {
            CKEDITOR.instances.page_content.updateElement(); //works fine
});

ACTUALIZACIÓN 2:

Este código es correcto y que obtiene los datos de CKeditor en mi área de texto, pero aún así, no pasa nada con mi plugin de validación, no es "responder mientras se escribe" en el CKeditor mientras que debe reaccionar y decir que el campo es Aceptar cuando escribo en un texto

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

        });

        function updateTextArea()
        {
            CKEDITOR.tools.setTimeout( function()
                    { 
                        $("#page_content").val(CKEDITOR.instances.page_content.getData());
                    }, 0);  
        }
¿Fue útil?

Solución

Usted tendría que modificar el área de texto CKEditor volver a escribir el código HTML cuando se pierde el foco, en lugar de (supongo que esto es lo que hace por defecto) cuando se envía el formulario.

Alguien tenía una pregunta similar hace unos días y parece haber tenido éxito, comprobarlo .

Otros consejos

a todo el mundo Ok, he fijado que gracias a sus consejos:. El plug-in de validación jQuery está reaccionando al evento keyup en los campos de área de texto o mensajes de texto, por lo que necesita para desencadenar ese evento después de actualizar el área de texto

Mira esto:

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

    });

    function updateTextArea()
    {
        CKEDITOR.tools.setTimeout( function()
                { 
                    $("#page_content").val(CKEDITOR.instances.page_content.getData());
                    $("#page_content").trigger('keyup');
                }, 0);  
    }

No hay necesidad de hacer nada.

1er PASO: IMPORTANTE: actualización de área de texto CKeditor con el contenido real antes de presentar

form.on('submit', function () {
        for (var instanceName in CKEDITOR.instances) {
            CKEDITOR.instances[instanceName].updateElement();
        }
    });

El siguiente paso: Luego, después de validar su código (debe ser el último paso)

form.validate();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top