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 相关文章推荐
网页加载时页面显示进度条加载完成之后显示网页内容
Dec 23 Javascript
JS模板实现方法
Apr 03 Javascript
基于JQuery实现的图片自动进行缩放和裁剪处理
Jan 31 Javascript
javascript动态修改Li节点值的方法
Jan 20 Javascript
JS模拟超市简易收银台小程序代码解析
Aug 18 Javascript
vue通过点击事件读取音频文件的方法
May 30 Javascript
详解使用Next.js构建服务端渲染应用
Jul 10 Javascript
jQuery判断自定义属性data-val用法示例
Jan 07 jQuery
JS使用队列对数组排列,基数排序算法示例
Mar 02 Javascript
深入理解react 组件类型及使用场景
Mar 07 Javascript
webpack打包优化的几个方法总结
Feb 10 Javascript
基于JavaScript实现大文件上传后端代码实例
Aug 18 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中支持多种编码的中文字符串截取函数!
2007/03/20 PHP
php Ajax乱码
2008/04/09 PHP
在Windows系统上安装PHP运行环境文字教程
2010/07/19 PHP
php图片的裁剪与缩放生成符合需求的缩略图
2013/01/11 PHP
PHP自动识别字符集并完成转码详解
2013/08/02 PHP
Thinkphp 空操作、空控制器、命名空间(详解)
2017/05/05 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
2018/10/14 PHP
CI框架附属类用法分析
2018/12/26 PHP
Prototype使用指南之dom.js
2007/01/10 Javascript
建议大家看下JavaScript重要知识更新
2007/07/08 Javascript
firefox插件Firebug的使用教程
2010/01/02 Javascript
jQuery ajax cache缓存问题
2010/07/01 Javascript
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
js对象内部访问this修饰的成员函数示例
2014/04/27 Javascript
JS验证邮件地址格式方法小结
2015/12/01 Javascript
JavaScript如何禁止Backspace键
2015/12/02 Javascript
AngularJS仿苹果滑屏删除控件
2016/01/18 Javascript
js内置对象处理_打印学生成绩单的简单实现
2016/09/24 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
JS中利用swiper实现3d翻转幻灯片实例代码
2017/08/25 Javascript
Vue 组件传值几种常用方法【总结】
2018/05/28 Javascript
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
小程序实现横向滑动日历效果
2019/10/21 Javascript
[55:18]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Django中针对基于类的视图添加csrf_exempt实例代码
2018/02/11 Python
opencv 阈值分割的具体使用
2020/07/08 Python
Linux不知道文件后缀名怎么判断文件类型
2014/08/21 面试题
介绍一下结构化程序设计方法和面向对象程序设计方法的区别
2012/06/27 面试题
工会主席岗位责任制
2014/02/11 职场文书
小学毕业感言300字
2014/02/19 职场文书
三年级上册科学教学计划
2015/01/21 职场文书
酒店圣诞节活动总结
2015/05/06 职场文书
《攀登者》:“海拔8000米以上,你不能指望任何人”
2019/11/25 职场文书
python使用shell脚本创建kafka连接器
2022/04/29 Python