我想知道是否有可能将多个密码要求传递给VeeValidate,以显示用户缺少的要求。
例如,如果我们要求用户的密码应至少包含一个大写字母和至少一个数字,并且长度至少为5个字符,并且用户键入“ a1bb”,我们希望能够显示两个错误消息;一种与长度要求不相关,而另一种与大写要求不相关。
使用VeeValidate可以吗?还是有类似方法的例子?
答案 0 :(得分:1)
VeeValidate允许您显示多个错误字段,但是您需要先禁用fastExist
配置选项:
VeeValidate 默认情况下每个字段仅生成一条消息 运行验证管道时的快速退出策略。 [...]要禁用此行为,您可能需要配置 VeeValidate的配置中的fastExit选项,或使用Continues修饰符。 (source)
对于要应用于密码的规则,可以使用现有的 min
规则来设置最小长度。
对于其他规则(检查大写,小写,特殊字符和数字),它涉及正则表达式检查。 VeeValidate实际上提供了regex
规则,但在您的情况下,您需要多个规则。
因此,您需要定义 custom rules 。我在created
钩下面的代码段中放置了一些示例,但您也可以全局定义它们。
在我的示例中,我创建了一种通过按规则名称检查错误来返回css类error
的方法。(source)
现在,样式就是您的了。
const config = {
fastExit: false
}
Vue.use(VeeValidate, config)
new Vue({
el: "#app",
data() {
return { password: '' }
},
created() {
this.$validator.extend('upCase', {
getMessage: () => "One uppercase character",
validate: value => value.match(/[A-Z]/g) !== null
})
this.$validator.extend('number', {
getMessage: () => "One number",
validate: value => value.match(/[0-9]/g) !== null
})
},
methods: {
errorClass(rule) {
return {
'error': this.errors.firstByRule('password', rule)
}
}
}
})
li {
color: #B1B1B1;
}
li.error {
color: #262626;
}
<script src="https://unpkg.com/vue@2.6.8/dist/vue.min.js"></script>
<script src="https://unpkg.com/vee-validate@2.0.0-rc.19/dist/vee-validate.js"></script>
<div id="app">
<input type="text" v-validate="'min:8|number|upCase'" name="password" >
<ul>
<li :class="errorClass('upCase')">One uppercase character</li>
<li :class="errorClass('number')">One number</li>
<li :class="errorClass('min')">8 characters minimum</li>
</ul>
</div>
答案 1 :(得分:0)
检查此解决方案
创建自定义规则表单VEEVALIDATE
严格的密码验证
http://frankclark.xyz/veevalidate-strong-password-and-confirmation-validation