Vee-validate组件使用

项目地址

vee-validate

写在前面

笔者在写项目时,使用了vue-cli构建工具,默认使用了vue-router,笔者在项目中也使用到了其他组件,element-ui、vuex、vee-validate。

vee-validate组件与其他组件使用时,可能会出现一个问题computed property fields already taken,我的第一篇文章讲到了,如果不巧你也遇到了,请移步 解决方案

为什么选择这个?

  1. 因为笔者PHP出身,Laravel忠实粉丝。vee-validate的语法借鉴于laravel的validate组件。
  2. 比起vue-validate而言,它更加迷你、实用。(这个是在网上说的,笔者没有亲自去使用,列位看官可以亲自去实践)

让我们来进行实战吧

在这里,基本的使用笔者就不再说明,这里只是说几点,笔者在项目中使用的到的几点。

本地化实战

  • 提示信息本地化
    在没有进行本地化之前,你的提示信息是这样的:


    image.png

    在使用之后,你的效果是这样的:


    aaa

可以看到,本地化的提示信息是多么舒服,这是在生产环境我们需要的提示信息。

其实在官方文档中,已经给我们提供了本地化的代码,如下所示:

// 加载vee-validate下面本地化文件zh_CN(中文提示信息),默认是加载en(英文提示信息)
import zh_CN from 'vee-validate/dist/locale/zh_CN';
import VeeValidate, { Validator } from 'vee-validate';

// 添加一个本地化文件
Validator.addLocale(zh_CN);

// 让Vue使用VeeValidate插件,并且使用本地化文件zh_CN
Vue.use(VeeValidate, {
  locale: 'zh_CN'
});

这样做了,基本上就可以了。

  • 属性本地化
    在项目中,我们可能需要业务需要去定义字段,而这些字段可能是默认字段不存在的,比如beigin_time开始时间,而在本地化后,他不会自动解析为开始时间,那么它的报错信息就是这样的
begin_time 是必填选项

这样显然是不友好的,这就需要我们自己手动进行更改,如何更改呢?手册也给了我们相关demo。

import { Validator } from 'vee-validate';
const dictionary = {
  zh_CN: {
    attributes: {
      begin_time: '开始时间'
    }
  },};
// 组件的字典进行更新
Validator.updateDictionary(dictionary);

在我们完成上面代码后,它的显示就是这样的:

开始时间 是必填选项

显然,这才是我们需要的。

自定义规则实战

在vee-validate组件中只有20多条验证规则,不过也好,太过臃肿会导致文件过大。那么这种情况下,我们很可能会自己写验证规则,来实现我们要的验证。幸运的是,官方手册也给我们提供了相关方法。以下是笔者写的一个demo:

# validate/dictionary.js
export const isMobile = {
    messages: {
        zh_CN: '手机 格式错误',
    },
    validate: (value, args) => {
        return value.length === 11 && /^1[3-8]{1}\d{9}$/.test(value);
    }
};

# main.js
import * as rules from './validate/rules';
Validator.extend('mobile', rules.isMobile);// 添加手机号验证规则

这时,我们就可以为在表单中进行验证了。

我的HTML文件是这样的

<div class="login-container">
        <el-form autoComplete="on" v-model="loginForm" label-position="left" label-width="0px"
                 class="card-box login-form">
            <el-form-item>
                <el-input v-validate="'required|mobile'" v-model="loginForm.tel"
                          :class="{'input': true, 'is-danger': errorsBag.has('tel') }" name="tel" type="text"
                          placeholder="Account"></el-input>
                <span v-show="errorsBag.has('tel')" class="el-form-item__error">{{ errorsBag.first('tel') }}</span>
            </el-form-item>

            <el-form-item>
                <el-input v-validate="'required|min:6'" v-model="loginForm.password"
                          :class="{'input': true, 'is-danger': errorsBag.has('password') }" name="password" type="password"
                          placeholder="Password"></el-input>
                <span v-show="errorsBag.has('password')" class="el-form-item__error">{{ errorsBag.first('password') }}</span>
            </el-form-item>

            <el-form-item>
                <el-button type="primary" style="width:100%;">
                    登录
                </el-button>
            </el-form-item>
        </el-form>
    </div>

在写完本篇文章之后,我恍惚发现,ElementUI自带验证。很尴尬。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,056评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,497评论 18 139
  • 浓情端午,送你五个粽子, 让轻轻的叶子装着满满的问候, 小小的菱角捻出丝丝的情意, 长长的丝线系着柔柔的祝福, 浓...
    颜小巧阅读 114评论 0 0
  • 01导语 7月份开始写作以前,我也不是从没有想过要培养这个习惯。尤其晚上在阅读过一些文章产生共鸣后,瞬间鸡血暴起、...
    乐小磊阅读 730评论 3 8
  • 下午去了趟超市,和大街上的冷清相比,超市还是很热闹。都是买年货的。都说经济下行,老百姓似乎没多大影响。 每年的年,...
    职业群主阅读 100评论 0 0