vue+elementUI用户修改密码的前端验证

用户登录后修改密码,密码需要一定的验证规则。旧密码后端验证是否正确;前端验证新密码的规范性,新密码规范为:6-16位,至少含数字/字母/特殊字符中的两种;确认密码只需要验证与新密码是否一致;

弹窗结构

javascript 复制代码
<el-dialog title="修改密码"
           :visible.sync="passDlgVisible"
           @close="passDlgClose"
           width="400px">
    <el-form :model="passForm"
             ref="passRef"
             :rules="passRules"
             hide-required-asterisk
             label-width="70px"
             size="small">
        <el-form-item label="旧密码" prop="oldPassword">
            <el-input v-model="passForm.oldPassword" show-password></el-input>
        </el-form-item>
        <el-form-item label="新密码" prop="newPassword">
            <el-input v-model="passForm.newPassword" show-password></el-input>
        </el-form-item>
        <el-form-item label="确认密码" prop="confirmPassword">
            <el-input v-model="passForm.confirmPassword" show-password></el-input>
        </el-form-item>
    </el-form>
    <span slot="footer">
            <el-button @click="passDlgVisible=false" size="small">取消</el-button>
            <el-button @click="passSave" type="primary" size="small">确认</el-button>
        </span>
</el-dialog>

form验证规则

javascript 复制代码
passRules: {
	oldPassword:[{required: true, message: '请输入旧密码', trigger: 'blur'}],
    newPassword:[{validator: this.validNewPass, trigger: 'blur'}],
    confirmPassword:[{validator: this.validConfirmPass, trigger: 'blur'}]
}

验证函数

javascript 复制代码
/**
 * 验证新密码
 */
validNewPass(rule, value, callback) {
    let reg = /(?!^(\d+|[a-zA-Z]+|[~!@#$%^&*?]+)$)^[\w~!@#$%^&*?]{6,16}$/
    if (value === '') {
        callback(new Error('请输入新密码'));
    } else if (!reg.test(value)) {
        callback(new Error('6-16位,至少含数字/字母/特殊字符中的两种'))
    } else {
        if (this.passForm.confirmPassword !== '') {
            this.$refs.passRef.validateField('confirmPassword');
        }
        callback();
    }
},

/**
 * 验证确认密码
 */
validConfirmPass(rule, value, callback) {
    if (value === '') {
        callback(new Error('请再次输入密码'));
    } else if (value !== this.passForm.newPassword) {
        callback(new Error('两次输入密码不一致!'));
    } else {
        callback();
    }
}

弹窗关闭后清空字段和验证

javascript 复制代码
/**
 * 弹窗关闭事件
 */
passDlgClose() {
    this.passForm = {
        oldPassword: '',
        newPassword: '',
        confirmPassword: ''
    }
    this.$refs.passRef.clearValidate();
}

提交表单

javascript 复制代码
passSave() {
    this.$refs.passRef.validate((valid) => {
        if (valid) {
            this.passForm.userName = this.userName
            api.user.editPass(this.passForm).then(res => {
                this.passDlgVisible = false;
            })
        } else {
            return false;
        }
    });
}

这就是修改密码的全部流程啦。。。。有问题评论区答复。。。。能解决的就答复,不能解决的自己百度哈。。。。

相关推荐
用户938515635071 分钟前
大模型记忆指南:从短时缓存到永久记忆,手把手带你吃透 LangChain Memory 管理
javascript·人工智能
ModyQyW5 分钟前
vite-plugin-uni-pages 更新了什么
前端·uni-app
xqchen17 分钟前
Web Components 普及困境深度解析:技术标准与工程实践的落差
javascript
爱丶不疚21 分钟前
写给前端工程师的现代 Python 工程化最佳实践:从 pnpm 到 uv,从 CommonJS 到 src-layout
javascript·python·typescript
前端大卫24 分钟前
H5 渲染 PDF 并添加高亮的两种方案【附源码】
前端
Dreams°1231 小时前
【Java后端+Vue前后端分离:内网正常、公网访问异常|5个高频经典踩坑完整复盘】
java·开发语言·vue.js
小蒜学长1 小时前
基于Springboot+Vue的环保行动志愿者招募系统设计与实现(代码+数据库+LW)
java·数据库·vue.js·spring boot·后端
因_崔斯汀1 小时前
用 AI 生成 Three.js 沉浸式网站,代码与 Skill 均已开源
前端·人工智能
葡萄城技术团队2 小时前
一键触发工作表中所有异步函数:用依赖单元格刷新 SpreadJS 公式
前端
天道kabuto2 小时前
踩坑复盘:为什么在输入框按个回车,页面就偷偷刷新了?
vue.js