ElementUI自定义校验规则

5,793 阅读1分钟

前言

使用Vue做后台管理系统绕不开的一个框架就是ElementUI,而做后台管理系统,经常会遇见的就是对表单进行规则校验,从而减少不必要的Ajax请求。很多时候ElementUI提供的基础校验没有办法达到我们的需求,这时候就需要我们自定义校验规则。那么就来看看使用ElementUI提供的表单时如何自定义校验规则吧。


一、如何自定义校验规则?

官网:ElementUI

代码如下(示例):

为了统一管理,在src/utils目录下,新建validate.js文件,写一个校验手机号的规则,并将其导出。

export function validMobile(str) {
  return /^1[3-9]\d{9}$/.test(str) // 校验手机号
}

将写好的校验规则在.vue结尾的组件中导入使用。

<template>
  <div class="login_setting_container">
    <el-form ref="userInfo" :model="userInfo" :rules="rules" label-width="120px" style="margin-left:120px; margin-top:30px;">
      <el-form-item label="手机号" prop="tel">
        <el-input v-model="userInfo.tel" style="width:300px;" />
      </el-form-item>
      <el-form-item label="密码" prop="password">
        <el-input v-model="userInfo.password" type="password" style="width:300px;" />
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="onSubmit">更新</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>

<script>
// 将写好的校验规则导入进来
import { validMobile } from '@/utils/validate'
export default {
  name: 'userInfo',
  data() {
    var validateTel = (rule, value, callback) => {
    	// 判断传入的值是否可以通过校验
        if (!validMobile(value)) {
        callback(new Error('手机号格式不正确'))
      	} else {
        callback()
      	}
   	};
    return {
      userInfo: {
        tel: '',
        password: ''
      },
      rules: {
        tel: [
          { required: true, message: '手机号必填~', trigger: 'blur' },
          { validator: validateTel,message:'手机号格式不对', trigger: 'blur' }
        ],
        password: [
          { required: true, message: '密码必填~', trigger: 'blur' }
        ]
      }
    }
  },
  methods:{
    
    onSubmit() {
      // 如果表单内所有都通过校验就弹框提醒
      this.$refs.userInfo.validate((valid) => {
        if (valid) {
          alert('通过校验了~')
        }
      })
    }
  }
  }

</script>

<style>

</style>

二、结果演示

在这里插入图片描述 可以看到校验是依次从上往下校验的,当手机号为空的时候,先触发第一个基础校验,基础校验通过后才能触发自定义的校验规则。


总结

用心~