首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vuejs 2+表单验证

Vuejs 2+表单验证
EN

Stack Overflow用户
提问于 2016-10-24 10:52:22
回答 5查看 24.2K关注 0票数 21

既然vue-validator https://github.com/vuejs/vue-validator已经为Vuejs2做好了准备,那么实现前端验证的最佳方式是什么呢?

更新我发现了这个很棒的插件Vee Validate

EN

回答 5

Stack Overflow用户

发布于 2018-03-27 21:20:40

在我看来,使用vuelidate是实现VueJS前端验证的一个好方法。

它使用起来非常简单,而且功能强大。它提供基于模型的验证,这意味着它是您在验证的数据中定义的,因此它与模板完全解耦。它带有通用的内置验证器,用于电子邮件、最小长度和最大长度或必需的验证。还有很多其他的。

票数 3
EN

Stack Overflow用户

发布于 2016-11-23 13:35:07

由于最终都是Javascript,您还可以使用一些现有的Javascript验证库,如Parsely.jsValidate.js来将其连接起来。Validate.js库的一个好处是,如果你使用Vuex,它的格式可以很容易地存储在全局存储中:

代码语言:javascript
复制
var constraints = {
  creditCardNumber: {
    presence: true,
    format: {
      pattern: /^(34|37|4|5[1-5]).*$/,
      message: function(value, attribute, validatorOptions, attributes, globalOptions) {
        return validate.format("^%{num} is not a valid credit card number", {
          num: value
        });
      }
    },
    length: function(value, attributes, attributeName, options, constraints) {
      if (value) {
        // Amex
        if ((/^(34|37).*$/).test(value)) return {is: 15};
        // Visa, Mastercard
        if ((/^(4|5[1-5]).*$/).test(value)) return {is: 16};
      }
      // Unknown card, don't validate length
      return false;
    }
  },
  creditCardZip: function(value, attributes, attributeName, options, constraints) {
    if (!(/^(34|37).*$/).test(attributes.creditCardNumber)) return null;
    return {
      presence: {message: "is required when using AMEX"},
      length: {is: 5}
    };
  }
};

然后按如下方式使用:

代码语言:javascript
复制
validate({creditCardNumber: "4"}, constraints);
// => {"creditCardNumber": ["Credit card number is the wrong length (should be 16 characters)"]}

validate({creditCardNumber: "9999999999999999"}, constraints);
// => {"creditCardNumber": ["9999999999999999 is not a valid credit card number"]}

validate({creditCardNumber: "4242424242424242"}, constraints);
// => undefined

validate({creditCardNumber: "340000000000000"}, constraints);
// => {"creditCardZip": ["Credit card zip is required when using AMEX"]}

您还可以使用类似于@blur=validate(...)的代码将这些validate()函数连接到您的组件

票数 2
EN

Stack Overflow用户

发布于 2016-10-24 21:38:22

目前没有太多的选择。看看vue-awesome,在那里你可以找到最相关的库。目前有两个。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40210063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档