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 checkbox,radio是否选中的判断代码
Mar 20 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
Jan 13 Javascript
jquery的clone方法应用于textarea和select的bug修复
Jun 26 Javascript
js获取form的方法
May 06 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
Aug 12 Javascript
JS中frameset框架弹出层实例代码
Apr 01 Javascript
JS非空验证及邮箱验证的实例
Aug 11 Javascript
javascript trie前缀树的示例
Jan 29 Javascript
策略模式实现 Vue 动态表单验证的方法
Sep 16 Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
Dec 30 Javascript
在Chrome DevTools中调试JavaScript的实现
Apr 07 Javascript
js前端传json后台接收‘‘被转为quot的问题解决
Nov 12 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扩展函数
2006/10/09 PHP
我的php学习笔记(毕业设计)
2012/02/21 PHP
php中使用临时表查询数据的一个例子
2013/02/03 PHP
PHP数据过滤的方法
2013/10/30 PHP
php实现编辑和保存文件的方法
2015/07/20 PHP
javascript中获取选中对象的类型
2007/04/02 Javascript
js给dropdownlist添加选项的小例子
2013/03/04 Javascript
js判断是否为ie的方法小结
2014/01/13 Javascript
JavaScript学习小结之使用canvas画“哆啦A梦”时钟
2016/07/24 Javascript
js变量提升深入理解
2016/09/16 Javascript
js调用刷新界面的几种方式
2017/05/03 Javascript
vue router 通过路由来实现切换头部标题功能
2019/04/24 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
解决layui 表单元素radio不显示渲染的问题
2019/09/04 Javascript
nuxt配置通过指定IP和端口访问的实现
2020/01/08 Javascript
vuecli3.x中轻松4步带你使用tinymce的步骤
2020/06/25 Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
2020/07/30 Javascript
vue-quill-editor的使用及个性化定制操作
2020/08/04 Javascript
vue图片裁剪插件vue-cropper使用方法详解
2020/12/16 Vue.js
利用Python爬虫给孩子起个好名字
2017/02/14 Python
Pandas 对Dataframe结构排序的实现方法
2018/04/10 Python
Selenium的使用详解
2018/10/19 Python
Python增强赋值和共享引用注意事项小结
2019/05/28 Python
Python虚拟环境的原理及使用详解
2019/07/02 Python
Python 二叉树的层序建立与三种遍历实现详解
2019/07/29 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
详解Html5原生拖拽操作
2018/01/12 HTML / CSS
HTML5新增元素如何兼容旧浏览器有哪些方法
2014/05/09 HTML / CSS
Expedia挪威官网:酒店、机票和租车
2018/03/03 全球购物
来自世界各地的饮料:Flavourly
2019/05/06 全球购物
The Outnet亚太地区:折扣设计师时装店
2019/12/05 全球购物
前厅部经理岗位职责范文
2014/02/04 职场文书
《美丽的田园》教学反思
2014/03/01 职场文书
个人买房协议书范本
2014/10/06 职场文书
赞美教师的句子
2019/09/02 职场文书
微信小程序APP页面的之间的相互传递参数以及自定义组件
2022/04/19 Javascript