请记住,ValidationEngine 仅验证可见字段,CKeditor 使用visibility: hidden; display: none;
内联样式隐藏原始文本区域或 div。
正如您所发现的,需要此代码CKEditor.instances.textareaId.updateElement()
将编辑器区域的内容传输回原始元素,但还需要做更多工作。
您还需要使原始元素再次可见,并使用$('#textareaId').toggle()
or$('#textareaId').show()
执行此操作。现在您可以使用以下方法验证所有字段:
$('#formId').validationEngine('validate');
现在出现另一个问题,错误提示不是在编辑器区域附近,而是在原始元素处,因为visibility: hidden
,但这不是问题。我们只需使用$('#textareaId').toggle()
or再次隐藏原始元素$('#textareaId').hide()
,以使提示符与编辑器对齐。
完整代码
此代码使用 CKEditor v4 和 validationEngine v2.5。
<form id="yourFormId" onsubmit="return validate(this);">
<textarea id="textareaId" class="ckeditor"></textarea>
</form>
<script>
function validate(form) {
CKEDITOR.instances.textareaId.updateElement();
$('#textareaId').toggle();
validated = $(form).validationEngine('validate');
$('#textareaId').toggle();
return validated;
}
</script>
如果您有多个编辑器元素,您可能需要添加一个循环。
此代码的唯一缺点是硬编码的原始 elementId(s)。