Javascript form.io如何触发模糊的自定义验证?
在form.io form builder中,我正在添加自定义验证,但默认设置是在更改时触发验证,我想将其设置为“在模糊时” 我在“自定义验证”选项卡上尝试了以下代码:Javascript form.io如何触发模糊的自定义验证?,javascript,formio,Javascript,Formio,在form.io form builder中,我正在添加自定义验证,但默认设置是在更改时触发验证,我想将其设置为“在模糊时” 我在“自定义验证”选项卡上尝试了以下代码: let field = document.querySelector('input[name="data[nametest]"]'); field.addEventListener("blur", checkValidation); function checkValidation() { console.log('c
let field = document.querySelector('input[name="data[nametest]"]');
field.addEventListener("blur", checkValidation);
function checkValidation() {
console.log('checking...');
valid = (input.length > 5) ? true : 'Test name must be at least 5 characters long' ;
}
代码在blur上运行,但没有显示错误。有效的全局变量设置为正确的错误消息,只是没有显示在表单上。我注意到文本字段上的字符越多,事件在blur上触发的次数越多,我非常感谢您的帮助。
谢谢 在Form Builder视图中时,将禁用有效性检查。您可以在组件设置模式中测试简单验证:
现在,如果你想触发一个模糊的动作,你必须考虑到自定义验证不是持久的,并且是在每次评估时计算的,这意味着在它被评估之后对它进行的任何处理都不会影响组件本身。您需要将事件直接附加到组件实例中
您可以通过两种方式实现这一点:const{root}=instance;
常数comp=根?root.getComponent('key'):null;
如果(公司){
//删除任何侦听器以避免重复
公司关闭(“模糊”);
//定义模糊侦听器上的
公司名称('blur',()=>{
console.log('blur');
});
}
Formio.createForm(document.getElementById('Formio'),form)。然后((Formio)=>{
const component=formio.getComponent('key');
if(组件){
on('focus',()=>{
console.log('focus');
});
在('blur',()=>{
console.log('blur');
});
}
});
以下是一个工作示例: