VeeValidate允许您显示多个错误字段,但是您需要先禁用fastExist
配置选项:
VeeValidate默认情况下每个字段只生成一个消息,因为它在运行验证流水线时使用了快速退出策略。 [...] 要禁用此行为,您可能想要在VeeValidate的配置中配置fastExit选项或使用continues修饰符。(来源)
对于您想应用于密码的规则,可以使用现有的min
规则来设置最小长度。
对于其他规则(检查大写、小写、特殊字符和数字),这涉及到正则表达式检查。实际上,VeeValidate提供了一个regex
规则,但在您的情况下,您需要多个规则。
因此,您需要定义自定义规则。我在下面的created
钩子中放了一些示例,但您也可以在整个应用程序中定义它们。
在我的示例中,我创建了一个方法来检查按规则名称检查错误并返回css类error
。(来源)
现在样式由您决定。
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>
请检查这个解决方案
从VEEVALIDATE创建自定义规则表单
强密码验证
http://frankclark.xyz/veevalidate-strong-password-and-confirmation-validation