it编程 > 编程语言 > Javascript

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

10人参与 2025-04-24 Javascript

写一个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>

到此这篇关于vue + element-plus自定义表单验证(修改密码业务)的文章就介绍到这了,更多相关vue element-plus表单验证内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

使用Vue构建动态表单生成器的实现步骤

04-24

vue实现自定义颜色选择器

04-24

Vue3中keep-alive的使用及注意事项说明

04-24

vue实现在线进制转换功能

04-24

vue部署到线上为啥会出现404的原因分析及解决

04-24

React使用Redux Toolkit的方法示例

04-24

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论