前言
使用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>
二、结果演示
可以看到校验是依次从上往下校验的,当手机号为空的时候,先触发第一个基础校验,基础校验通过后才能触发自定义的校验规则。
总结
用心~