gpt4 book ai didi

validation - VeeValidate 多个密码约束

转载 作者:搜寻专家 更新时间:2023-10-30 22:46:20 25 4
gpt4 key购买 nike

我想知道是否可以将多个密码要求传递给 VeeValidate 以显示用户缺少哪些要求。

例如,如果我们要求用户的密码至少包含一个大写字母和至少一个数字且长度至少为 5 个字符,并且用户输入“a1bb”,我们希望能够显示两条错误信息;一种与不满足长度要求相关,另一种与不满足大写要求相关。

最终,我们希望能够做这样的事情: enter image description here

VeeValidate 可以吗?或者是否有任何类似方法的示例?

最佳答案

VeeValidate 允许您显示多个错误字段,但您需要禁用 fastExist首先配置选项:

VeeValidate only generates one message per field by default as it uses a fast-exit strategy when running the validation pipeline. [...] To disable this behavior you may want to configure the fastExit option in VeeValidate's config or use the continues modifier. (source)


对于要应用于密码的规则,可以使用现有的 min 最小长度规则。

对于其他规则(检查大写、小写、特殊字符和数字),这是关于正则表达式检查。 VeeValidate 实际上提供了一个 regex规则,但在您的情况下,您需要多个规则。

所以你需要定义 custom rules 。我在 created 的下面的片段中放了一些例子。钩子(Hook),但您也可以全局定义它们。


在我的示例中,我创建了一个方法来返回一个 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>

关于validation - VeeValidate 多个密码约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55170199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com