el-form表单验证

发布于 2022-09-12 00:26:16 字数 1352 浏览 16 评论 0

一个表单,有很多个必填项,需求:这些必填项如果有一个有填其他的全变为不是必填项,如果都没有填,则都是必填项

export default {
    data () {
        return {
            dynamicValidateForm: {
                value: '',
                email: ''
            },
            rules: {
                email: [{ required: true, message: '请输入邮箱地址', trigger: 'blur' }],
                value: [{ required: true, message: '请输入正确的邮箱地址', trigger: 'blur' }]
            }
        }
    },
    watch: {
        dynamicValidateForm: {
            handler (val, oval) {
                console.log(val, oval)
                for (var  i  in  this.dynamicValidateForm) {
                    console.log(this.dynamicValidateForm[i])
                    if (i) {
                        this.rules[i][0].required  =  true
                    } if (!i) {
                        this.rules[i][0].required  =  false
                    }
                },
                deep:  true
            }
        }
    },

    methods: {
        submitForm (formName) {
            this.$refs[formName].validate((valid) => {
                if (valid) {
                    alert('submit!')
                } else {
                    console.log('error submit!!')
                    return  false
                }
            })
        }
    }
}

请问一下watch里该怎么写,给出感谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

零度℉ 2022-09-19 00:26:16

大概这样写:

const checkValidator = (msg) => (rule, value, callback) => {
  if (!this.form.email && !this.form.value) {
    callback(new Error(msg));
  } else {
    this.$refs.form.clearValidate(["email", "value"]);
    callback();
  }
};

{
     rules: {
        email: [{ validator: checkValidator('请输入邮箱地址'), trigger: 'blur' }],
        value: [{ validator: checkValidator('xxxxx'), trigger:'blur' }]
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文