2

我正在使用 CKeditor 和来自基础的 jQuery 验证插件。我的文本区域(上面带有 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

4

3 回答 3

4

我通过写作解决了它:

CKEDITOR.instances.prod_description.updateElement();

其中“prod_description”是链接到 CKeditor 的文本区域的名称。

于 2009-12-14T22:03:37.927 回答
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"
于 2011-03-03T16:08:12.553 回答
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;
        }
于 2011-07-15T21:39:26.013 回答