关于element-ui验证修改密码的问题?

当修改新密码与确认密码一致时,触发确认密码的验证,当修改确认密码与新密码一致时,触发新密码的验证,
这样会形成死循环,

image.png
image.png

代码如下

const validatePass = function (rule, value, callback) {
    if(value.length < 8 || value.length > 20 ){
        callback(new Error('长度在 8 到 20 个字符'));
    }
    if (value === '' || value === undefined) {
        callback(new Error('请输入新密码'));
    } else {
        newPwd = value;
        const reg=/^(?=.*[a-zA-Z])(?=.*[1-9])(?=.*[\W]).{8,}$/;
        if (!reg.test(newPwd)) {
            callback(new Error('密码应同时包含字母、数字、特殊符号'));
        } else if (value != rePwd) {
            // _this.$refs['changePwdFormName'].validateField('repwd')
            callback(new Error('两次输入密码不一致!'));
            // callback()
        } else {
            _this.$store.getters['uiModule/getChangePwd'].validateField('repwd')
            return 
            callback();
        }
    }
};
const reValidatePass = (rule, value, callback) => {
    if (value === '' || value === undefined) {
        callback(new Error('请再次输入新密码'));
    } else {
        rePwd = value;
        if (value !== newPwd) {
            callback(new Error('两次输入密码不一致!'));
        } else {
            _this.$store.getters['uiModule/getChangePwd'].validateField('newpwd')
            return
            callback();
        }
    }
};

改如何解决这个问题?

阅读 4.6k
1 个回答
const validatePass = (rule, value, callback) => {
  if (value === '') {
    callback(new Error('请输入密码'))
  } else {
    if (this.ruleForm.newPassword2 !== '') {
      this.$refs.form.validateField('newPassword2')
    }
    callback()
  }
}
const validatePass2 = (rule, value, callback) => {
  if (value === '') {
    callback(new Error('请再次输入密码'))
  } else if (value !== this.ruleForm.newPassword) {
    callback(new Error('两次输入密码不一致!'))
  } else {
    callback()
  }
}

去掉这行就行了吧

_this.$store.getters['uiModule/getChangePwd'].validateField('newpwd')
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题