vue校验密码的三种写法

一、在el-form(element ui中的form表单)中使用:rules=“rules” 实现

1.在项目的src/utils文件夹下创建validate.js文件
在这里插入图片描述
validate.js文件中内容为:
在这里插入图片描述

/**
 * @param value
 * 测试密码是否满足条件,包括四种类型
 */
 export function validPassword(value) {
  const num = /^.*[0-9]+.*/
  const low = /^.*[a-z]+.*/
  const up = /^.*[A-Z]+.*/
  const spe = /^.*[^a-zA-Z0-9]+.*/
  const passLength = value.length > 5 && value.length < 21
  return num.test(value) && low.test(value) && up.test(value) && spe.test(value) && passLength
}

2.在需要校验密码的vue文件内import引入validate.js中的validPassword函数
在这里插入图片描述

import { validPassword } from '@/utils/validate'

3.在需要校验密码的vue文件中的data定义校验函数,调用validPassword 函数
在这里插入图片描述

const validatePassword = (rule, value, callback) => {
      if (validPassword(value)) callback()
      else callback(new Error('密码6-20位,必须包含大写字母,小写字母,数字及特殊字符'))
    }

4.在需要校验密码的vue文件中的form表单中写:rules=“rules”
在这里插入图片描述
5.在rules中通过validator: validatePassword使用自定义校验规则
在这里插入图片描述

password: [
          { required: true, trigger: "blur",validator: validatePassword},
        ],

二、使用this.$prompt实现

在这里插入图片描述

 /** 重置密码按钮操作 */
    handleResetPwd(row) {
      this.$prompt('请输入"' + row.userName + '"的新密码', "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        closeOnClickModal: false,
        inputPattern: /^.*(?=.{6,20})(?=.*\d)(?=.*[A-Z]{1,})(?=.*[a-z]{1,})(?=.*[!@#$%^&*?\(\)]).*$/,
        inputErrorMessage: "'密码6-20位,必须包含大写字母,小写字母,数字及特殊字符'",
      }).then(({ value }) => {
          resetUserPwd(row.userId, value).then(response => {
            this.msgSuccess("修改成功,新密码是:" + value);
          });
        }).catch(() => {});
    },

prompt() 弹出个输入框

三、a-input(ant-design-vue)中使用

前两步同一
在这里插入图片描述

 <a-input
          placeholder="请输入新密码"
          type="password"
          v-decorator="['newPassword', {rules: [{required: true, message: '请输入新密码!'},{
            validator: validateToNextPassword,
          },]}]" />

在这里插入图片描述

validateToNextPassword (rule, value, callback) {
        if (validPassword(value)) callback()
        else callback(new Error('密码8-20位,必须包含大写字母,小写字母,数字及特殊字符'))
      }
  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对你的问题,我给出一份示例代码,代码中使用的是Vue3的组合式 API 写法,同时使用了TypeScript进行类型校验。 在父组件中,我们通过 `setup` 函数将参数传递给子组件,并使用 `defineComponent` 定义组件,并对传递参数进行类型校验。在子组件中,我们使用 `props` 接收父组件传递的参数,并使用 `defineComponent` 定义组件,并对接收参数进行类型校验。 ```html <!-- ParentComponent.vue --> <template> <div> <ChildComponent :title="title" :count="count" /> </div> </template> <script lang="ts"> import { defineComponent, ref } from 'vue'; export default defineComponent({ name: 'ParentComponent', setup() { const title = ref<string>('Parent Component'); const count = ref<number>(0); return { title, count, }; }, }); </script> ``` ```html <!-- ChildComponent.vue --> <template> <div> <h2>{{ title }}</h2> <p>{{ count }}</p> </div> </template> <script lang="ts"> import { defineComponent, PropType } from 'vue'; export default defineComponent({ name: 'ChildComponent', props: { title: { type: String as PropType<string>, required: true, }, count: { type: Number as PropType<number>, required: true, }, }, }); </script> ``` 在上述代码中,我们对 `title` 和 `count` 进行了类型校验,分别为 `string` 和 `number` 类型,并且设置了 `required: true`,表示这两个参数是必须要传递的。 当我们在父组件中传递参数时,如果传递的参数类型不符合子组件定义的类型,或者未传递必须的参数,TypeScript 将会给出相应的类型错误提示,从而帮助我们减少类型错误和调试时间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值