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 相关文章推荐
jquery Moblie入门—hello world的示例代码学习
Jan 08 Javascript
jquery监听div内容的变化具体实现思路
Nov 04 Javascript
vue.js中mint-ui框架的使用方法
May 12 Javascript
Vue2.0权限树组件实现代码
Aug 29 Javascript
Vue工程模板文件 webpack打包配置方法
Dec 26 Javascript
axios 处理 302 状态码的解决方法
Apr 10 Javascript
在vue中读取本地Json文件的方法
Sep 06 Javascript
React 项目迁移 Webpack Babel7的实现
Sep 12 Javascript
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
Sep 25 Javascript
vue实现微信获取用户信息的方法
Mar 21 Javascript
js中arguments对象的深入理解
May 14 Javascript
js通过循环多张图片实现动画效果
Dec 19 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导出oracle库的php代码
2009/04/20 PHP
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
2011/05/04 PHP
php页面消耗内存过大的处理办法
2013/03/18 PHP
ThinkPHP函数详解之M方法和R方法
2015/09/10 PHP
Javascript中获取出错代码所在文件及行数的代码
2010/09/23 Javascript
自写简单JS判断是否已经弹出页面
2010/10/20 Javascript
cookie在javascript中的使用技巧以及隐私在服务器端的设置
2012/12/03 Javascript
基于KMP算法JavaScript的实现方法分析
2013/05/03 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
2015/01/20 Javascript
jquery表单验证插件formValidator使用方法
2016/04/01 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
2016/05/18 Javascript
javascript如何用递归写一个简单的树形结构示例
2017/09/06 Javascript
javascript计算渐变颜色的实例
2017/09/22 Javascript
Vue 进入/离开动画效果
2017/12/26 Javascript
vue项目开发中setTimeout等定时器的管理问题
2018/09/13 Javascript
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
JavaScript实现简单计算器
2020/03/19 Javascript
[00:52]DOTA2齐天大圣预告片
2016/08/13 DOTA
Python实现的金山快盘的签到程序
2013/01/17 Python
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
pygame游戏之旅 计算游戏中躲过的障碍数量
2018/11/20 Python
Python实现栈和队列的简单操作方法示例
2019/11/29 Python
tensorflow之自定义神经网络层实例
2020/02/07 Python
Python3 mmap内存映射文件示例解析
2020/03/23 Python
Python关于拓扑排序知识点讲解
2021/01/04 Python
澳大利亚鞋仓库:Shoe Warehouse
2019/07/25 全球购物
护士的岗位职责
2013/12/04 职场文书
创建市级文明单位实施方案
2014/03/01 职场文书
培训科主任岗位职责
2014/08/08 职场文书
小学教师师德师风个人整改措施
2014/09/18 职场文书
普通党员对照检查材料
2014/09/24 职场文书
2014幼儿园教师个人工作总结
2014/11/08 职场文书
民主生活会汇报材料
2014/12/15 职场文书
2015年119消防宣传日活动总结
2015/03/24 职场文书
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL
SpringBoot项目部署到阿里云服务器的实现步骤
2022/06/28 Java/Android