veeValidate的使用

这是Vue的一个插件。js允许您以一种简单而强大的方式验证输入字段,并显示错误。
官方文档veeValidate

vue表单验证.png

安装

npm

npm install vee-validate --save

cdn

 <script src="path/to/vue.js"></script>
  <script src="path/to/vee-validate.js"></script>
  <script>
    Vue.use(VeeValidate); // good to go. 
  </script>

或者你可以用ES6

import Vue from 'vue';
import VeeValidate from 'vee-validate';

Vue.use(VeeValidate);

中文的配置

我在网上搜了各种方法均无效
对了,如果cnpm install vee-validate --save没有出现语言包,可以试试这个

cnpm install  vee-validate@^2.0.0-rc.26  --save

必须加上版本号,这样才node_modules的文件下有个veeValidate文件夹,里面有个dist文件,不带版本号出现不了那个locale文件


语言包.png

我搜寻了几篇帖子使用vee-validate表单插件是如何设置中文提示?这篇是最靠谱的

首先安装i18n
cnpm install --save vue-i18n
然后在main.js里面引入
import VeeValidate from 'vee-validate';
import {Validator} from 'vee-validate';
import zh_CN from 'vee-validate/dist/locale/zh_CN'  //加载语言包应该写成这个样子
import VueI18n from 'vue-i18n';
Vue.use(VueI18n)
const i18n = new VueI18n({
  locale: 'zh_CN',
})
Vue.use(VeeValidate, {
  i18n,
  i18nRootKey: 'validation',
  dictionary: {
    zh_CN
  }
});
在模板里面使用
  <div class="g-form-line">
             <span class="g-form-label">邮箱</span>
             <div class="g-form-input">
                 <input v-validate ="'required|email'" type="text" id="email" name="myEmail" :class="{'input': true, 'is-danger': errors.has('email') }">
             </div>
             <span v-show="errors.has('myEmail')" class="help is-danger">{{ errors.first('myEmail')}}</span>
          </div>

这样子中文就可以出现了

自定义消息
const dict = {
  messages:{
     required:()=>'这个是必须的'
  }
}

const validator = new Validator({});
validator.localize('zh_CN',dict);
自定义规则
Validator.extend('username', {
  getMessage: field => '以字母或者下划线开头,可包含字母数字下划线',
  validate: value => {
    return  /^[a-zA-Z0-9_-]{4,10}$/.test(value)
  }
});
Validator.extend('phonenumber', {
  getMessage: field => field + '必须是11位手机号码',
  validate: value => {
    return value.length == 11 && /^((13|14|15|17|18)[0-9]{1}\d{8})$/.test(value)
  }
});
Validator.extend('password', {
  getMessage: field => field + '最少6位,包括至少1字母、特殊字符、数字',
  validate: value => {
    return  /^.*(?=.{6,})(?=.*\d)(?=.*[A-Za-z])(?=.*[!@#$%^&*? ]).*$/.test(value)
  }
});
在模板中使用
 <div class="g-form-line">
             <span class="g-form-label">用户名</span>
             <div class="g-form-input">
                 <input v-validate ="'required|username'" type="text" id="email" name="myUsername">
             </div>
             <span v-show="errors.has('myUsername')" class="help is-danger">{{ errors.first('myUsername')}}</span>
        </div>
           <div class="g-form-line">
             <span class="g-form-label">手机号码</span>
             <div class="g-form-input">
                 <input v-validate ="'required|phonenumber'" type="text" id="phonenumber" name="myPnumber">
             </div>
             <span v-show="errors.has('myPnumber')" class="help is-danger">{{ errors.first('myPnumber')}}</span>
          </div>
      
         <div class="g-form-line">
             <span class="g-form-label">邮箱</span>
             <div class="g-form-input">
                 <input v-validate ="'required|email'" type="text" id="email" name="myEmail" :class="{'input': true, 'is-danger': errors.has('email') }">
             </div>
             <span v-show="errors.has('myEmail')" class="help is-danger">{{ errors.first('myEmail')}}</span>
          </div>
           
        <div class="g-form-line">
          <span class="g-form-label">密码:</span>
          <div class="g-form-input" >
            <input type="password"  v-validate="'required|password|confirmed:pwd_confirm'" id="password" name="myPassWord"  placeholder="请输入密码" >
          </div>
          <span v-show="errors.has('myPassWord')" class="help is-danger">{{ errors.first('myPassWord')}}</span>
        </div>
内置校验规则
after{target} - 比target要大的一个合法日期,格式(DD/MM/YYYY)
alpha - 只包含英文字符
alpha_dash - 可以包含英文、数字、下划线、破折号
alpha_num - 可以包含英文和数字
before:{target} - 和after相反
between:{min},{max} - 在min和max之间的数字
confirmed:{target} - 必须和target一样
date_between:{min,max} - 日期在min和max之间
date_format:{format} - 合法的format格式化日期
decimal:{decimals?} - 数字,而且是decimals进制
digits:{length} - 长度为length的数字
dimensions:{width},{height} - 符合宽高规定的图片
email - 不解释
ext:[extensions] - 后缀名
image - 图片
in:[list] - 包含在数组list内的值
ip - ipv4地址
max:{length} - 最大长度为length的字符
mimes:[list] - 文件类型
min - max相反
not_in - in相反
numeric - 只允许数字
regex:{pattern} - 值必须符合正则pattern
required - 不解释
size:{kb} - 文件大小不超过
url:{domain?} - (指定域名的)url

作者:乖乖果效36
链接:https://www.jianshu.com/p/bd606e194392

更多详细内置规则可以点击这里

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

推荐阅读更多精彩内容