VeeValidate 确认规则因自定义验证器而失败
VeeValidate Confirmed Rule Fails With Custom Validator
使用 Vee-Validate,当将自定义验证器与确认规则一起使用时,确认规则总是无法通过验证。自定义验证器在正在确认的输入字段上指定,如下所示:
<input type="password" placeholder="Password" data-vv-as="password" v-model="password" name="password" v-validate="'required|min:8|has_upper'" />
<input type="password" placeholder="Password" data-vv-as="confirm" v-model="confirmPassword" name="confirmPassword" v-validate="'required|confirmed:password'" />
这是我的 Vue 实例:
(function (Vue, VeeValidate) {
VeeValidate.Validator.extend('has_upper', {
getMessage: function (field) {
return 'The ' + field + ' must contain an upper case letter';
},
validate: function (value) {
return /^(?=.*[A-Z]).+$/.test(value);
}
});
Vue.use(VeeValidate);
var enroll = {
el: "#app",
data: {
password:'',
confirmPassword: ''
}
}
var app = new Vue(enroll);
})(Vue, VeeValidate)
密码字段的自定义验证程序按预期触发,但是,如前所述,确认规则对于确认密码模型总是失败。
最近在 Vee-Validate(2.1.0 及更高版本)中,他们更改了参数的工作方式。现在,confirmed 的目标必须是一个 ref,所以这会起作用:
<input type="password" ref="password" name="password" v-validate="'required'" />
<input type="password" v-model="confirmPassword" name="confirmPassword" v-validate="'confirmed:password'" />
您真正需要做的唯一更改是将 ref="password"
添加到您的密码输入中。
关于此更改的作者,请参阅此处:https://github.com/baianat/vee-validate/issues/1415
到目前为止,我没有在文档中看到任何更改,但我认为它会出现。
使用 Vee-Validate,当将自定义验证器与确认规则一起使用时,确认规则总是无法通过验证。自定义验证器在正在确认的输入字段上指定,如下所示:
<input type="password" placeholder="Password" data-vv-as="password" v-model="password" name="password" v-validate="'required|min:8|has_upper'" />
<input type="password" placeholder="Password" data-vv-as="confirm" v-model="confirmPassword" name="confirmPassword" v-validate="'required|confirmed:password'" />
这是我的 Vue 实例:
(function (Vue, VeeValidate) {
VeeValidate.Validator.extend('has_upper', {
getMessage: function (field) {
return 'The ' + field + ' must contain an upper case letter';
},
validate: function (value) {
return /^(?=.*[A-Z]).+$/.test(value);
}
});
Vue.use(VeeValidate);
var enroll = {
el: "#app",
data: {
password:'',
confirmPassword: ''
}
}
var app = new Vue(enroll);
})(Vue, VeeValidate)
密码字段的自定义验证程序按预期触发,但是,如前所述,确认规则对于确认密码模型总是失败。
最近在 Vee-Validate(2.1.0 及更高版本)中,他们更改了参数的工作方式。现在,confirmed 的目标必须是一个 ref,所以这会起作用:
<input type="password" ref="password" name="password" v-validate="'required'" />
<input type="password" v-model="confirmPassword" name="confirmPassword" v-validate="'confirmed:password'" />
您真正需要做的唯一更改是将 ref="password"
添加到您的密码输入中。
关于此更改的作者,请参阅此处:https://github.com/baianat/vee-validate/issues/1415
到目前为止,我没有在文档中看到任何更改,但我认为它会出现。