使用CKEditor与jQuery验证插件无法正常工作

时间:2009-12-14 21:06:49

标签: jquery validation ckeditor

我正在使用CKeditor和来自baseistance的jQuery验证插件。我的textarea(上面有CKEditor)正在由jQuery验证,但只有在第二次点击我的提交按钮后才有效。

简而言之: 当我在CKEditor中输入数据时第一次提交表单时,它表示“字段为空”。第二次它表示没问题,表格正在提交。

我为此阅读了一个解决方案:

“你可以在每个验证例程之前调用CKEDITOR.editor :: updateElement来解决这个问题。”

我找不到如何实现它:

$(document).ready(function(){
    CKEDITOR.replace( 'prod_description',
    {
        toolbar: 'MyToolbar'
    }
    );

    $("#btnOk").click(function(){
        CKEDITOR.instances.editor1.updateElement();
        alert('click');
    });
});

这总是给我错误:“CKEDITOR.instances.editor1未定义”

关于如何解决这个问题的任何想法。来自CKEditor的文档在这里: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#updateElement

3 个答案:

答案 0 :(得分:4)

感谢czarchaic,

我通过写作解决了这个问题:

CKEDITOR.instances.prod_description.updateElement();

其中“prod_description”是与其关联的CKeditor的textare的名称。

答案 1 :(得分:1)

这可能不是最好的方法,但是我创建了一个jquery规则,它只是检查CKEditor中是否有数据。如果有数据,则它通过规则。如果没有,则失败。这对我来说似乎很有用。

//Have to build custom method to check ckeditor
jQuery.validator.addMethod("ckeditor", function(value, element) { 
    var textData = editor.getData();
    if(textData.length>0) return true;
    return false;
}, "No data in editor");

然后,我的规则看起来像这样:

'fieldName': "ckeditor"

答案 2 :(得分:1)

我的页面上有多个CKEDITORS,所以我这样做:

        // You need to update the editors before jqValidator.
        for (var i in CKEDITOR.instances)
        {
            CKEDITOR.instances[i].updateElement();
        }
        if (!jqValidator.form())
        {
            alert('Error Alert: please correct the errors detailed below, then click "Apply changes" again.');
            return;
        }