表单校验中rules的trigger触发方式的区别

489 阅读2分钟

总结:虽然最后提交的时候会触发全部字段的校验,但是如果没有正确设置tigger会导致无法及时校验,下拉框使用change,输入框使用blur。

在表单校验中,rulestrigger 属性指定了触发验证的时机。常见的触发方式有 blurchange,它们的区别如下:

  1. blur:在输入框失去焦点时触发验证。这通常用于在用户完成输入并离开输入框后进行验证,适合需要在用户完成输入后才进行验证的场景。一般用于input这种直接输入的
  2. 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校验
   
      },