Vue中关于ElementUI表单验证整理

  • 摘要:
  • 使用方法
  • 1.绑定
  • 2.触发、重置、移除
  • 3. 自定义校验规则
  • 参考地址


摘要:

Form 组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item 的 prop 属性设置为需校验的字段名即可,如下:rules为验证规则,field为表单字段名。

<el-form :rules="rules">
    <el-form-item prop="field"></el-form-item>
</el-form>
使用方法
1.绑定
  • model:绑定对应需要校验的数据
  • rules:绑定校验规则
  • prop:绑定的表单字段名

prop的名称、表单字段名、校验规则名三者必须一致,否则校验不生效
: form: { name: ’ '}, rules: { name: ’ '}, prop=“name”

<el-form :model="form" :rules="rules">
    <el-form-item prop="name"></el-form-item>
</el-form>
rules: {
        name: [
          { required: true, message: '请输入名称', trigger: 'blur' },
          { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
        ]
      },
 form: { name: '' }

rules绑定值的类型为Object,以键值对的形成出现,其中key为校验规则名(prop的名称、校验规则名),值则为校验规则数组

2.触发、重置、移除
<el-form :model="form" :rules="rules" ref="ruleForm">
    <el-form-item prop="name"></el-form-item>
</el-form>
<el-button type="primary" @click="submitForm('ruleForm')">提交</el-button>
// 触发校验
submitForm(formName) {
  this.$refs[formName].validate((valid) => {
     if (valid) {
       // 通过校验
     } else {
       // 未通过校验
       return false;
     }
   });
},
// 重置校验:对该表单项进行重置,将其值重置为初始值并移除校验结果
resetForm(formName) {
   this.$refs[formName].resetFields();
},
/**
 移除表单项的校验结果
 传入待移除的表单项的 prop 属性或者 prop 组成的数组,如不传则移除整个表单的校验结果
 */
clearFormName(formName,name,nameArray){
   this.$refs[formName].clearValidate();
   this.$refs[formName].clearValidate([name]);
   this.$refs[formName].clearValidate(nameArray);
}
3. 自定义校验规则
data() {
    let checkPhone = (rule, value, callback) => {
      let reqPhone = /^1[3456789]\d{9}$/
      if (reqPhone.test(value)) {
        callback()
      } else {
        callback(new Error('手机号格式不正确!'))
      }
    }
    return {
      rules: {
        phone: [{ validator: checkPhone, trigger: 'blur' }]
      }
    }
  }

:自定义校验 callback 必须被调用。

  • 校验规则参数

类型

描述

type

标志要使用的validator的数据类型

required

是否必填

message

提示内容

trigger

触发条件(change、blur)

min

最小值

max

最大值

len

精准长度 (优先级高于min,max)

enum

枚举中存在该值 (type必须为enum类型)

whitespace

不能包含空白符

validator

正则 (必须加 required: true)

  • type类型

type

描述

string

必须是 String 类型(默认值)

number

必须是 Number类型

boolean

必须是 Boolean类型

method

必须是 Function类型

integer

必须是 number 类型和整数

float

必须是 number 类型和浮点数

array

必须是 Array,由 isArray 确定的数组。.

object

必须是Object 必须是类型而不是Array.isArray

date

值必须有效Date

url

必须是url 类型

hex

必须是 hex类型

regexp

必须是RegExp,在创建新RegExp时不生成异常的 实例 或 字符串

email

值必须存在于 enum中

any

可以是任何类型

参考地址