已解决elementPlus表单中对特定字段进行校验

一:业务需求

        1.在注册时候,电话密码验证码是必填的,在获取验证码的时候,电话密码是必填项,由于初始化就将rules定义了验证码必填,因此在获取验证码的事件中需要将它定义为false

        2.我最初使用的是对特定的字段进行校验,发现有bug,当必填内容失去焦点时候,验证码也会弹出校验,这是我的初始代码

 formRef.value.validateField(['nickName', 'password', 'confirmPassword', 'username'], valid => {
    if (valid) {
      ElMessage.success('表单已完成初步验证');
      // 检查验证码是否填写
      if (state.form.phoneCode) {
        ElMessage.success('验证通过,正在提交');
        // 提交逻辑
      } else {
        ElMessage.error('请填写验证码');
      }
    } else {
      ElMessage.error('表单验证未通过,请检查输入内容');
    }
  });

3.我发现可以直接修改rules中的required属性依旧可以达到效果

        1.这是获取验证码时关闭对验证码必填项的判断

const getSmsCodeEvent = async () => {
  formRules.phoneCode[0].required = false
  console.log("获取验证码", formRules.phoneCode[0].required)
  formRef.value?.validate((valid) => {
    if (valid) {
      console.log("获取验证码")
    } else {
      console.log("error submit!")
    }
  })
}

        2.在最终的表单校验将验证码校验开启。

const confirmEvent = async (formEl: FormInstance | undefined) => {
  formRules.phoneCode[0].required = true
  if (!formEl) return
  await formEl.validate((valid, fields) => {
    if (valid) {
      console.log("确认修改")
    } else {
      console.log("error submit!", fields)
    }
  })
}

末尾:如果大家有更好的方法可以跟我讲一下~

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值