vue中vee validate表单校验的几种基本使用


Posted in Javascript onJune 25, 2018

今天主要记录一下用vee-validate来进行表单校验的几个基本使用。包括最基础的必填和长度校验;异步请求服务的校验(重名校验),还有延迟校验。如何引入等就不在这里赘述了,直接进入主题。

1.必填和长度校验

直接采用v-validate属性进行配置,不同的校验采用 ‘|' 隔开。是否有报错根据 errors.has('userName') 进行判断,‘userName'对应的是表单的name属性的值。

errors.first('userName)会展示表单校验中第一个错误信息。

<el-col :span="4" class="form-label">
  <label>用户名</label>
 </el-col>
 <el-col :span="8">
  <el-input name="userName" v-model="userName" v-validate="'required|min:2|max:20'"></el-input>
  <span v-show="errors.has('userName')" class="error">{{ errors.first('userName') }}</span>
 </el-col>

结果如下:

vue中vee validate表单校验的几种基本使用

从结果我们可以看到,校验的错误信息是展示了,但是默认都是英文的,这个可能有时跟我们实际开发的需求不是一致的。这个我们可以采用

vee-validate的国际化去进行中文的展示。但是这里我要介绍的是另一种方式,如果是系统只需要支持一种语言,我觉得用这种方式就可以。

直接采用 errors.first('userName:required') 即 ‘字段名:校验规则'  的方式进行判断进而展示对应提示信息的方式。这个方式可以让表单在对应校验不通过时展示我们自己定义对应的个性化提示信息。

优点是:配置简单,方便实现个性化提示。

<el-col :span="4" class="form-label">
  <label>用户名</label>
</el-col>
<el-col :span="8">
  <el-input name="userName" v-model="userName" v-validate="'required|min:2|max:20'"></el-input>
  <span v-show="errors.first('userName:required')" class="error">用户名为必填项</span>
  <span v-show="errors.first('userName:min')" class="error">用户名的最小长度为2</span>
  <span v-show="errors.first('userName:max')" class="error">用户名的最大长度为20</span>
</el-col>

 2.异步校验 和延迟

异步校验,主要就是两部分,一个是校验器的定义,一个是使用

定义部分:

import { Validator } from 'vee-validate';
const emailsDB = [
 'abcd@cc.com'
];
const isUnique = value => new Promise((resolve) => {
 setTimeout(() => {
  if (emailsDB.indexOf(value) === -1) {
   return resolve({
    valid: true
   });
  }

  return resolve({
   valid: false,
   data: {
    message: `${value} 已存在.`
   }
  });
 }, 200);
});
Validator.extend('unique', {
 validate: isUnique,
 getMessage: (field, params, data) => data.message
});

使用:

<el-col :span="4" class="form-label">
  <label>邮箱</label>
 </el-col>
 <el-col :span="8">
  <el-input name="email" v-model="email" v-validate="'unique'" data-vv-delay="1000"></el-input>
  <span v-show="errors.first('email:unique')" class="error">重复</span>
 </el-col>

结果:

vue中vee validate表单校验的几种基本使用

其中  data-vv-delay="1000"  就是延迟校验的使用。1000即1000毫秒

以下是几个例子的完整代码:

<template>
  <div>
    <el-form name="myForm" novalidate>
      <el-row>
        <el-col :span="4" class="form-label">
          <label>邮箱</label>
        </el-col>
        <el-col :span="8">
          <el-input name="email" v-model="email" v-validate="'unique'" data-vv-delay="1000"></el-input>
          <span v-show="errors.first('email:unique')" class="error">重复</span>
        </el-col>

        <el-col :span="4" class="form-label">
          <label>用户名</label>
        </el-col>
         <el-col :span="8">
          <el-input name="userName" v-model="userName" v-validate="'required|min:2|max:20'"></el-input>
          <span v-show="errors.first('userName:required')" class="error">用户名为必填项</span>
          <span v-show="errors.first('userName:min')" class="error">用户名的最小长度为2</span>
          <span v-show="errors.first('userName:max')" class="error">用户名的最大长度为20</span>
        </el-col>
        <!-- <el-col :span="8">
          <el-input name="userName" v-model="userName" v-validate="'required|min:2|max:20'"></el-input>
          <span v-show="errors.has('userName')" class="error">{{ errors.first('userName') }}</span>
        </el-col> -->
        
      </el-row>
    </el-form>
  </div>
</template>
<script>
import { Validator } from 'vee-validate';

const emailsDB = [
  'abcd@cc.com'
];
const isUnique = value => new Promise((resolve) => {
  setTimeout(() => {
    if (emailsDB.indexOf(value) === -1) {
      return resolve({
        valid: true
      });
    }

    return resolve({
      valid: false,
      data: {
        message: `${value} 已存在.`
      }
    });
  }, 200);
});

Validator.extend('unique', {
  validate: isUnique,
  getMessage: (field, params, data) => data.message
});
export default {
  data() {
    return {
      email: '',
      userName: ''
    }
  }
}
</script>
<style scoped>
.form-label {
 text-align: right;
 padding-right: 10px;
}
.error {
 color: red;
}
</style>

总结

以上所述是小编给大家介绍的vue中vee validate表单校验的几种基本使用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
可拖动窗口,附带鼠标控制渐变透明,开启关闭功能
Jun 26 Javascript
cookie丢失问题(认证失效) Authentication (用户验证信息)也会丢失
Jun 04 Javascript
基于jquery实现的服务器验证控件的启用和禁用代码
Apr 27 Javascript
jQuery使用andSelf()来包含之前的选择集
May 19 Javascript
全面理解JavaScript中的继承(必看)
Jun 16 Javascript
angularjs 表单密码验证自定义指令实现代码
Oct 27 Javascript
在网页中插入百度地图的步骤详解
Dec 02 Javascript
基于JavaScript实现弹幕特效
Aug 27 Javascript
Vue的路由动态重定向和导航守卫实例
Mar 17 Javascript
ES6知识点整理之模块化的应用详解
Apr 15 Javascript
深入了解js原型模式
May 30 Javascript
Web应用开发TypeScript使用详解
May 25 Javascript
超出JavaScript安全整数限制的数字计算BigInt详解
Jun 24 #Javascript
JS的函数调用栈stack size的计算方法
Jun 24 #Javascript
JavaScript中var、let、const区别浅析
Jun 24 #Javascript
使用JavaScript中的lodash编写双色球效果
Jun 24 #Javascript
Vue中$refs的用法详解
Jun 24 #Javascript
JS实现获取word文档内容并输出显示到html页面示例
Jun 23 #Javascript
纯JS实现的读取excel文件内容功能示例【支持所有浏览器】
Jun 23 #Javascript
You might like
php页面防重复提交方法总结
2013/11/25 PHP
php处理带有中文URL的方法
2016/07/11 PHP
jquery each()源代码
2011/02/14 Javascript
关于js datetime的那点事
2011/11/15 Javascript
jquery制作搜狐快站页面效果示例分享
2014/02/21 Javascript
jquery获取checkbox的值并post提交
2015/01/14 Javascript
freemarker判断对象是否为空的方法
2015/08/13 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
JS实现弹出下载对话框及常见文件类型的下载
2017/07/13 Javascript
原生JS实现自定义滚动条效果
2020/10/27 Javascript
手淘flexible.js框架使用和源代码讲解小结
2018/10/15 Javascript
react 组件传值的三种方法
2019/06/03 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
[41:37]DOTA2北京网鱼队选拔赛——冲击职业之路
2015/04/13 DOTA
Python设置默认编码为utf8的方法
2016/07/01 Python
Jupyter notebook远程访问服务器的方法
2018/05/24 Python
Python Flask前后端Ajax交互的方法示例
2018/07/31 Python
python ddt数据驱动最简实例代码
2019/02/22 Python
python mac下安装虚拟环境的图文教程
2019/04/12 Python
Python之修改图片像素值的方法
2019/07/03 Python
使用Python实现文字转语音并生成wav文件的例子
2019/08/08 Python
Python 实现国产SM3加密算法的示例代码
2020/09/21 Python
python爬虫中PhantomJS加载页面的实例方法
2020/11/12 Python
HTML5+css3:3D旋转木马效果相册
2017/01/03 HTML / CSS
Clarks英国官方网站:全球领军鞋履品牌
2016/11/26 全球购物
美国体育用品商店:Paragon Sports
2017/10/08 全球购物
全球领先的美容用品专卖店:Beauty Plus Salon
2018/09/04 全球购物
副护士长竞聘演讲稿
2014/04/30 职场文书
少先队活动总结
2014/08/29 职场文书
用电申请报告范文
2015/05/18 职场文书
幼儿园开学家长寄语(2016春季)
2015/12/03 职场文书
2019终止劳动合同协议书最新范本!
2019/07/09 职场文书
如何制定销售人员薪酬制度?
2019/07/09 职场文书
《分一些蚊子进来》读后感3篇
2020/01/09 职场文书
SQLServer RANK() 排名函数的使用
2022/03/23 SQL Server
处理canvas绘制图片模糊问题
2022/05/11 Javascript