如何在vee-validate中防止意外验证?

时间:2019-07-29 10:15:14

标签: vue.js vee-validate

我有两个字段:唯一 unique1 。这两个字段在模糊时均有效。

唯一是必需的。

unique1 具有三个规则-必需,speicalRule和is_not:唯一。

问题:

当我在 unique1 中键入内容时-验证程序的行为是合乎逻辑的。 然后,当我开始在 unique 中键入内容后-每次更改唯一字段时,都会触发speicalRule

问题:

如何在vee-validate中防止意外的验证规则“ speicalRule”?

代码如下:

<input name="unique" data-vv-validate-on="blur" placeholder="unique" v-validate="'required'" v-model="unique">

<input name="unique1" data-vv-validate-on="blur" placeholder="unique1" v-validate="{required:true,speicalRule: true, is_not: unique }" v-model="unique1">

mounted() {
const speicalRule = function speicalRule(unique1) {
    return new Promise(function (resolve) {
     debugger;
      return resolve({
        valid: true, //this is specical for test and demonstrate the problem
        data: {
          message: 'incorrect'
        }
      })
    });
};

this.$validator.extend("speicalRule", {
    validate: speicalRule,
    getMessage: function getMessage(field, params, data) {
        return data.message;
    }
});

}

示例,您可以查看https://jsfiddle.net/392uxowr/6/

2 个答案:

答案 0 :(得分:1)

unique1 字段中,有一个规则 is_not ,您可以在其中传递 unique 的值作为参数。现在,只要更改 unique 的值,就会验证 unique1 字段。因此,所有与 unique1 相关的规则都得到了验证。这就是为什么 specialRule 被解雇的原因。

如果此验证是意外的,则可以删除两个字段之间的依赖项。

答案 1 :(得分:0)

除了ATT的答案外,请参阅以下有关交互方式的文档:https://baianat.github.io/vee-validate/guide/interaction.html#interaction-modes

如果您不喜欢验证如此激进,请考虑切换到其他模式。