我正在使用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
答案 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;
}