官网
https://element-plus.org/zh-CN/component/form.html#自定义校验规则
需求
在日常开发中,我们需要对表单的内容进行校验,确保用户输入的符合我们正常的业务,并赋予正确的提示,以登录注册举例:
功能需求说明:
- 注册功能(校验+注册)
当用户输入用户名移开文本框后,也就是失去焦点时,需要去校验用户输入的内容是否符合,如果错误并给予提示。
代码如下:
<script setup>
import { User, Lock } from '@element-plus/icons-vue'
import { ref } from 'vue'
const isRegister = ref(true)
// 注册
// 整个的用于提交的form数据对象
const formModel = ref({
username: '',
password: '',
repassword: ''
})
// 自定义校验规则
const checkPassword = (rule, value, callback) => {
// value 是当前字段的值,this 是表单对象
if (value !== formModel.value.password) {
return callback(new Error('两次输入的密码不一致'))
} else {
callback()
}
}
// 整个表单的校验规则
const rules = {
//1.非空校验 trigger 什么时候触发,blur 表示失去焦点时,required为空校验,message为提示信息
//2.长度校验 min 最小长度 max 最大长度 message 提示信息
//3.正则校验 pattern:正则规则 \S 非空字符
username: [
{ required: true, message: '请输入用户名', trigger: 'blur' },
{ min: 5, max: 10, message: '用户名必须是5-10位的字符', trigger: 'blur' },
{
pattern: '/^[a-zA-Z][a-zA-Z0-9_]{0,}$/',
message: '用户名只能包含字母、数字和下划线',
trigger: 'blur'
}
],
password: [
{ required: true, message: '请输入密码', trigger: 'blur' },
{
pattern: '/^\\S{6,15}$/',
message: '密码长度6-15位,且不能有空字符',
trigger: 'blur'
}
],
repassword: [
{ required: true, message: '请输入密码', trigger: 'blur' },
{ validator: checkPassword, trigger: 'blur' } // 自定义验证规则
]
}
</script>
<template>
<el-form
:model="formModel" // 表单绑定的数据
:rules="rules" // 校验规则
ref="form"
size="large"
autocomplete="off"
v-if="isRegister"
>
<el-form-item>
<h1>注册</h1>
</el-form-item>
<el-form-item prop="username"> // prop中的值与rules值要一致
<el-input
v-model="formModel.username" // 双向绑定
:prefix-icon="User"
placeholder="请输入用户名"
></el-input>
</el-form-item>
</template>
标签:校验,表单,trigger,plus,blur,message,element,输入
From: https://www.cnblogs.com/zgf123/p/17876743.html