我们有一些代码用于验证在模糊运行的CKEditor textarea上的输入。我们在所有使用CKEditor的textareas中添加了一个ckeditor_textarea
类,并运行此代码将必要的函数附加到blur事件:
$("textarea.ckeditor_textarea").each(function(){
var textarea_id = $(this).attr("id");
CKEDITOR.instances[textarea_id].on('blur',function(){
// Validation functions here
});
});
这可以在模糊事件发生时触发验证功能。但是,我们还需要在提交按钮时手动触发模糊事件,以便在提交之前在这些CKEditor textareas上运行验证功能。
如何在CKEditor textarea上触发模糊事件?使用jQuery语法(当然这不起作用因为CKEditor实例不是jQuery对象),我基本上都在寻找这样的东西:
$("textarea.ckeditor_textarea").each(function(){
var textarea_id = $(this).attr("id");
CKEDITOR.instances[textarea_id].trigger('blur');
});
答案 0 :(得分:2)
您不应混合使用jQuery事件和CKEDITOR事件。如果您想为CKEDITOR实例设置模糊,请注册:
ckeInst.on('模糊',功能(e){
});
然后,如果你真的想要触发模糊事件,你可以这样做:
ckeInst.focusManager.blur( true );
编辑器将从事件(如果您拥有)或通过CKEDITOR.instances [' yourCkeName'];
中重新启动答案 1 :(得分:1)
对于提交验证,我建议您在提交处理程序中使用updateElement()
方法,然后运行验证代码:
以下将使用页面上的编辑器更新任何和所有元素:
$('form').on('submit', function(e){
for (instance in CKEDITOR.instances) {
CKEDITOR.instances[instance].updateElement();
}
// run validation code
});
这也确保表单数据与编辑器本身保持同步
答案 2 :(得分:0)
根据@ charlietfl的回答,我能够为我的情况找到解决方案。
首先,我创建了一个调用函数来运行验证代码:
function ckeditor_blur_event(textarea_id){
// validation code
}
然后,我更改了我的问题中的第一个代码块以使用新函数:
$("textarea.ckeditor_textarea").each(function(){
var textarea_id = $(this).attr("id");
ckeditor_blur_event(textarea_id)
});
最后,我在提交表单时触发相同的验证码:
$("textarea.ckeditor_textarea").each(function(){
var textarea_id = $(this).attr("id");
CKEDITOR.instances[textarea_id].updateElement();
ckeditor_blur_event(textarea_id)
});
答案 3 :(得分:0)
对我来说可靠而正确地工作的唯一方法是:
editor.window.$.frameElement.blur();