当前位置: 首页 > news >正文

vue + element-plus自定义表单验证(修改密码业务)

写一个vue组件Password.vue

没有表单验证只有3个表单项

<template><div><el-form><el-form-item label="旧密码"><el-input></el-input></el-form-item><el-form-item label="新密码"><el-input></el-input></el-form-item><el-form-item label="验证密码"><el-input></el-input></el-form-item></el-form></div>
</template>
<script setup></script>

路由省略

给这个表单绑定一个对象

<template><div><el-form :="data.form"><el-form-item label="旧密码" v-model="data.form.oldPassword"><el-input ></el-input></el-form-item><el-form-item label="新密码" v-model="data.form.password"><el-input></el-input></el-form-item><el-form-item label="验证密码" v-model="data.form.confirmPassword"><el-input></el-input></el-form-item></el-form></div>
</template>
<script setup>
import {reactive}  from "vue";
const data = reactive({form: {oldPassword: '',password: '',confirmPassword: ''}
})
</script>

给表单绑定规则注意表单项一定要有prop属性 属性值对应 data.rules里的属性

<template><div><el-form :model="data.form" :rules="data.rules"><el-form-item label="旧密码" prop="oldPassword" ><el-input v-model="data.form.oldPassword"></el-input></el-form-item><el-form-item label="新密码"   prop="password"><el-input v-model="data.form.password"></el-input></el-form-item><el-form-item label="验证密码" ><el-input v-model="data.form.confirmPassword"></el-input></el-form-item></el-form></div>
</template>
<script setup>
import {reactive}  from "vue";
const data = reactive({form: {oldPassword: '',password: '',confirmPassword: ''},rules: {oldPassword: [{ required: true, message: '请输入旧密码', trigger: 'blur' },{ min: 6, max: 32, message: '长度在 6 到 32 个字符', trigger: 'blur' }],password: [{ required: true, message: '请输入新密码', trigger: 'blur' },{ min: 6, max: 32, message: '长度在 6 到 32个字符', trigger: 'blur' }]}
})
</script>

       

添加自定义规则注意规则有优先级的

<template><div><el-form :model="data.form" :rules="data.rules"><el-form-item label="旧密码" prop="oldPassword" ><el-input v-model="data.form.oldPassword"></el-input></el-form-item><el-form-item label="新密码"   prop="password"><el-input v-model="data.form.password"></el-input></el-form-item><el-form-item label="验证密码"   prop="confirmPassword"><el-input v-model="data.form.confirmPassword"></el-input></el-form-item></el-form></div>
</template>
<script setup>
import {reactive}  from "vue";
const validatePass1 = (rule, value, callback) => {if (value === '') {callback(new Error('请输入新密码'));} else if (value !== '123') {callback(new Error('旧密码错误'));}else{callback();}
}
const validatePass2 = (rule, value, callback) => {if (value === '') {callback(new Error('请再次输入新密码'));} else if (value !== data.form.password) {callback(new Error('两次输入密码不一致!'));} else {callback();}
}
const data = reactive({form: {oldPassword: '',password: '',confirmPassword: ''},rules: {oldPassword: [{ required: true, message: '请输入旧密码', trigger: 'blur' },{validator: validatePass1, trigger: 'blur'}],password: [{ required: true, message: '请输入新密码', trigger: 'blur' },{ min: 6, max: 32, message: '长度在 6 到 32个字符', trigger: 'blur' }],confirmPassword: [{ required: true, message: '请再次输入新密码', trigger: 'blur' },{ validator: validatePass2, trigger: 'blur' }]}
})
</script>

相关文章:

  • MySQL安装实战:从零开始搭建你的数据库环境
  • ANDON系统如何解决重工业车间的信息传递难题
  • 基于django云平台的求职智能分析系统(源码+lw+部署文档+讲解),源码可白嫖!
  • 数据库day-05
  • 关于Spring解决循环依赖的一些思考
  • STM32H503CB升级BootLoader
  • 【广州华锐互动】汽车生产引入数字孪生系统,优化生产流程,提升汽车产品质量
  • 2025年Q2(门式)起重机司机考试的题目及答案
  • Android学习总结之算法篇七(图和矩阵)
  • mybatis-plus整合springboot与使用方式
  • 【初阶数据结构】——算法复杂度
  • 实体转型互联网营销:破局与新生-中小企实战运营和营销工作室博客
  • 一本通 2061:【例1.2】梯形面积
  • [音视频]基于h264的直播与点播技术栈整理
  • 模拟浏览器指纹:生成与定制特定属性
  • 【数据资产入表】数据确权
  • tortoiseSVN切换登录账号失败【已解决】
  • 实验二 两个多位十进制数相加实验
  • IPC(进程间通信)---- 信号
  • Java实现AES加密解密终极指南:从基础到高阶实战
  • 工人日报关注跟着演出去旅游:票根经济新模式兴起,让过路客变过夜客
  • 铁路五一假期运输旅客发送量累计超1亿人次,今日预计发送2110万人次
  • 李学明谈笔墨返乡:既耕春圃,念兹乡土
  • 黔西市游船倾覆事故发生后,贵州省气象局进入特别工作状态
  • 今晚上海地铁1、2、10、17号线加开定点班车至次日0点
  • “矿茅”国际化才刚开始?紫金矿业拟分拆境外黄金矿山资产于港交所上市