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 相关文章推荐
Package.js  现代化的JavaScript项目make工具
May 23 Javascript
JavaScript 创建运动框架的实现代码
May 08 Javascript
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
Jul 09 Javascript
jQuery中element选择器用法实例
Dec 29 Javascript
input输入框鼠标焦点提示信息
Mar 17 Javascript
jQuery验证插件validate使用详解
May 11 Javascript
利用JavaScript阻止表单提交的两种方法
Aug 11 Javascript
微信端开发--登录小程序步骤
Jan 11 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
Apr 10 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
Sep 19 Javascript
express.js中间件说明详解
Mar 19 Javascript
Node.js如何优雅的封装一个实用函数的npm包的方法
Apr 29 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/12/06 PHP
手把手教你使用DedeCms V3的在线采集图文教程
2007/04/03 PHP
详解php的魔术方法__get()和__set()使用介绍
2012/09/19 PHP
解析CodeIgniter自定义配置文件
2013/06/18 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
2015/06/06 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
2017/02/10 PHP
jquery $.each 和for怎么跳出循环终止本次循环
2013/09/27 Javascript
node.js中实现同步操作的3种实现方法
2014/12/05 Javascript
jQuery EasyUI 入门必看
2016/06/03 Javascript
JS小数转换为整数的方法分析
2017/01/07 Javascript
angular实现input输入监听的示例
2018/08/31 Javascript
angular 数据绑定之[]和{{}}的区别
2018/09/25 Javascript
详解element上传组件before-remove钩子问题解决
2020/04/08 Javascript
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
java直接调用python脚本的例子
2014/02/16 Python
Python实现的数据结构与算法之双端队列详解
2015/04/22 Python
python爬虫获取多页天涯帖子
2018/02/23 Python
python爬虫爬取笔趣网小说网站过程图解
2019/11/18 Python
python 实现turtle画图并导出图片格式的文件
2019/12/07 Python
IE10 Error.stack 让脚本调试更加方便快捷
2013/04/22 HTML / CSS
连卡佛中国官网:Lane Crawford中文站
2018/01/27 全球购物
80年代复古T恤:TruffleShuffle
2018/07/02 全球购物
酒店管理毕业生自荐信
2013/10/24 职场文书
公司请假条格式
2014/04/11 职场文书
人民调解员先进事迹材料
2014/05/08 职场文书
党支部对照检查材料
2014/08/25 职场文书
乡镇领导班子批评与自我批评材料
2014/09/23 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书
在职证明书模板
2015/06/15 职场文书
教师节获奖感言
2015/07/31 职场文书
《月光曲》教学反思
2016/02/16 职场文书
2016年公共机构节能宣传周活动总结
2016/04/05 职场文书
2019年“红色之旅”心得体会1000字(3篇)
2019/09/27 职场文书
JavaScript实现贪吃蛇游戏
2021/06/16 Javascript
Python将CSV文件转化为HTML文件的操作方法
2021/06/30 Python
python 详解turtle画爱心代码
2022/02/15 Python