我有两个字段:唯一和 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/
答案 0 :(得分:1)
在 unique1 字段中,有一个规则 is_not ,您可以在其中传递 unique 的值作为参数。现在,只要更改 unique 的值,就会验证 unique1 字段。因此,所有与 unique1 相关的规则都得到了验证。这就是为什么 specialRule 被解雇的原因。
如果此验证是意外的,则可以删除两个字段之间的依赖项。
答案 1 :(得分:0)
除了ATT的答案外,请参阅以下有关交互方式的文档:https://baianat.github.io/vee-validate/guide/interaction.html#interaction-modes
如果您不喜欢验证如此激进,请考虑切换到其他模式。