Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
524 views
in Technique[技术] by (71.8m points)

关于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();
        }
    }
};

改如何解决这个问题?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
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')

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...