总结:虽然最后提交的时候会触发全部字段的校验,但是如果没有正确设置tigger会导致无法及时校验,下拉框使用change,输入框使用blur。
在表单校验中,rules 的 trigger 属性指定了触发验证的时机。常见的触发方式有 blur 和 change,它们的区别如下:
blur:在输入框失去焦点时触发验证。这通常用于在用户完成输入并离开输入框后进行验证,适合需要在用户完成输入后才进行验证的场景。一般用于input这种直接输入的change:在输入框内容发生变化时触发验证。这种方式在用户每次修改输入内容时都会进行验证,适合需要实时反馈用户输入是否有效的场景。一般用于el-select这种选择的,在数据发生变化时会直接触发校验提示红色校验信息
示例
blur 触发方式:
rules: {
username: [
{ required: true, message: '请输入用户名', trigger: 'blur' },
{ min: 5, max: 15, message: '用户名长度应在 5 到 15 个字符之间', trigger: 'blur' }
]
}
change 触发方式:
rules: {
email: [
{ required: true, message: '请输入邮箱地址', trigger: 'change' },
{ type: 'email', message: '邮箱地址格式不正确', trigger: 'change' }
]
}
选择触发方式时,可以根据具体需求决定。例如,blur 适合不需要实时校验的场景,而 change 更适合需要立即反馈的场景。
除了以上两种触发方式,还有其他写法
rules: {
planType: [{ required: true, message: '计划类型不能为空', trigger: ['blur', 'change'] }], // 两种同时使用
planMonth: [{ required: true, message: '计划月份不能为空', trigger: ['change'] }], // 触发change
chkType: [{ required: true, message: '检查方式不能为空', trigger: 'blur' }], //正常写法
opeType: [{ required: true, message: '检验类别不能为空', trigger: blur }], // 没有引号,虽然不会报错,但是也不会触发blur校验
},