【问题标题】:VeeValidate multiple password constraintsVeeValidate 多个密码约束
【发布时间】:2019-08-05 19:13:43
【问题描述】:

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

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

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

VeeValidate 可以实现吗?或者有没有类似方法的例子?

【问题讨论】:

标签: validation vue.js passwords vee-validate


【解决方案1】:

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

VeeValidate 默认情况下每个字段只生成一条消息,因为它使用 运行验证管道时的快速退出策略。 [...] 要禁用此行为,您可能需要配置 VeeValidate 配置中的 fastExit 选项或使用 continue 修饰符。 (source)


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

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

所以你需要定义custom rules。我在下面的 created 钩子中的 sn-p 中放置了一些示例,但您也可以全局定义它们。


在我的示例中,我通过按规则名称检查错误来创建一个返回 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>

【讨论】:

    【解决方案2】:

    检查这个解决方案

    制定自定义规则表单 VEEVALIDATE

    强密码验证

    http://frankclark.xyz/veevalidate-strong-password-and-confirmation-validation

    【讨论】:

      猜你喜欢
      • 2015-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-06
      相关资源
      最近更新 更多