Vue-Ant Design Vue-普通及自定义校验实例


Posted in Javascript onOctober 24, 2020

这段时间在使用Ant Design Vue进行项目的前端部分开发,进行一个记录,分享…

Ant Design Vue

Ant Design Vue是 Ant Design 3.X 的 Vue 实现,开发和服务于企业级后台产品。在GitHub上可以找到几个Ant Design的Vue组件。不过相比较而言,Ant Design Vue更胜一筹。Ant Design Vue共享Ant Design of React设计工具体系,实现了所有Ant Design of React的组件,支持现代浏览器和 IE9 及以上(需要 polyfills)。可以让熟悉Ant Design的在使用Vue时,很容易的上手。

nodejs,npm包括Ant Design Vue安装什么的就不说了,可以百度,之后有时间我会写一篇关于这一套东西的安装教程,关于Ant Design Vue,可以直接查看官方文档:https://vue.ant.design

下面说一下关于Ant Design Vue中的表单校验及自定义校验。

自定义校验

先给一张Ant Design Vue得form表单中不同类型的校验场景图,看看是否有你需要的:

Vue-Ant Design Vue-普通及自定义校验实例

官方提供了 validateStatus, help ,hasFeedback 等属性,你可以不需要使用 Form.create 和 getFieldDecorator,自己定义校验的时机和内容。

validateStatus: 校验状态,可选 ‘success', ‘warning', ‘error', ‘validating'。

hasFeedback:用于给输入框添加反馈图标。

help:设置校验文案。

说明一点: 当你使用Ant Design Vue的使用,经过 Form.create 包装的组件将会自带 this.form 属性

this.form 提供的 关于校验的API如下 :

方法 说明 类型
validateFields 校验并获取一组输入域的值与 Error,若 fieldNames 参数为空,则校验全部组件 Function([fieldNames: string[]], [options: object], callback: Function(errors, values))

然后看下Form.Item的参数设置(主要看关于校验的):

参数 说明 类型 默认值
extra 额外的提示信息,和 help 类似,当需要错误信息和提示文案同时出现时,可以使用这个。 string/slot
hasFeedback 配合 validateStatus 属性使用,展示校验状态图标,建议只配合 Input 组件使用。 boolean false
help 提示信息,如不设置,则会根据校验规则自动生成 string/slot
validateStatus 校验状态,如不设置,则会根据校验规则自动生成,可选:‘success' ‘warning' ‘error' ‘validating' string

最后是校验规则设置:

Vue-Ant Design Vue-普通及自定义校验实例

相关的api及参数设置介绍完乐,下面上实例

实例

写一个简单的例子

form表单代码:

<a-form style="max-width: 500px; margin: 40px auto 0;" @submit="handleSubmit" :form="form">
<a-form-item
label="密码"
:labelCol="{span: 5}"
:wrapperCol="{span: 19}"
class="stepFormText"
hasFeedback
>
<a-input
v-decorator="[
'password',
{rules: [{ required: true, message: '请输入密码' },{validator: handlePass}]}
]"
name="password"
/>
</a-form-item>
<a-form-item
label="确认密码"
:labelCol="{span: 5}"
:wrapperCol="{span: 19}"
class="stepFormText"
hasFeedback
>
<a-input
v-decorator="[
'confirm_password',
{rules: [{ required: true, message: '请输入确认密码' },{validator: handleConfirmPass}]}
]"
name="confirm_password"
/>
</a-form-item>
<a-form-item :wrapperCol="{span: 19, offset: 5}">
<a-button :loading="loading" type="primary" htmlType="submit">提交</a-button>
</a-form-item>
</a-form>

进行一下说明,以确认密码的校验为例:

<a-input
     v-decorator="[
     'confirm_password',
     {rules: [{ required: true, message: '请输入确认密码' },{validator: handleConfirmPass}]}
    ]"
     name="confirm_password"
   />

rules中为一个数组,每一项就是一个校验规则,第一项规则容易理解,但是{validator: handleConfirmPass}是什么的,我们通过上面的校验规则设置(红框处)可以发现,这是当你设置自定义校验的时候需要这么写。注意:callback 必须被调用。

handleConfirmPass 其实就是自定义校验的校验方法。

上js代码:

<script>
export default {
 data () {
  return {
   labelCol: {
    xs: { span: 24 },
    sm: { span: 7 }
   },
   wrapperCol: {
    xs: { span: 24 },
    sm: { span: 13 }
   },
   password: '',
   // form
   form: this.$form.createForm(this)
  }
 },
 methods: {
  handlePass(rule,value,callback){
   this.password = value
   callback()
  },
  handleConfirmPass(rule,value, callback){
   if (this.password && this.password !== value) {
    callback('两次密码输入不一致!')
   }
   // Note: 必须总是返回一个 callback,否则 validateFieldsAndScroll 无法响应
   callback()
  },
  handleSubmit (e) {
   e.preventDefault()
   this.form.validateFields((err, values) => {
    if (!err) {
     console.log(values)
    }
   })

  }
 }
}
</script>

效果图如下:

1.空值提交

Vue-Ant Design Vue-普通及自定义校验实例

2.自定义校验规则生效

Vue-Ant Design Vue-普通及自定义校验实例

好了,这就是关于Ant Design Vue的普通及自定义校验的简单使用。

补充知识:关于 Ant Design of Vue 表单动态赋值 触发验证 问题

关于 Ant Design of Vue 表单动态赋值 触发验证

Ant Design of Vue 中 给表单动态赋值 使用 setFieldsValue 方法 这一点 之前已经介绍过了 ,不了解的可以查找我之前的博客 上面有详细的介绍使用方法

但使用 该方法可能会出现 一个问题 例如本人使用的下拉框触发 change 事件的时候 给表单 动态赋值

这个时候遇到一个问题 就是 触发的同时也触发了表单验证 解决的方法是 在setFieldsValue 方法的外面

加上 this.$nextTick(() => {}) 方法 如图所示

Vue-Ant Design Vue-普通及自定义校验实例

轻松解决 问题 。

以上这篇Vue-Ant Design Vue-普通及自定义校验实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript json2 使用方法
Mar 16 Javascript
js String对象中常用方法小结(字符串操作)
Jan 27 Javascript
可兼容IE的获取及设置cookie的jquery.cookie函数方法
Sep 02 Javascript
Node.js中require的工作原理浅析
Jun 24 Javascript
深入探究AngularJS框架中Scope对象的超级教程
Jan 04 Javascript
深入理解setTimeout函数和setInterval函数
May 20 Javascript
Vue.js 实现微信公众号菜单编辑器功能(一)
May 08 Javascript
使用rollup打包JS的方法步骤
Dec 05 Javascript
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
Feb 20 Javascript
pageGroup.js实现分页功能
Jul 27 Javascript
vue学习笔记之slot插槽用法实例分析
Feb 29 Javascript
微信小程序实现页面左右滑动
Nov 16 Javascript
解决vue打包报错Unexpected token: punc的问题
Oct 24 #Javascript
解决vue项目axios每次请求session不一致的问题
Oct 24 #Javascript
解决vue中使用less/sass及使用中遇到无效的问题
Oct 24 #Javascript
vue中是怎样监听数组变化的
Oct 24 #Javascript
JSON stringify方法原理及实例解析
Oct 23 #Javascript
vue中使用腾讯云Im的示例
Oct 23 #Javascript
vue中使用router全局守卫实现页面拦截的示例
Oct 23 #Javascript
You might like
用PHP编程开发“虚拟域名”系统
2006/10/09 PHP
PHP实现定时生成HTML网站首页实例代码
2008/11/20 PHP
php设计模式 Chain Of Responsibility (职责链模式)
2011/06/26 PHP
thinkphp 一个页面使用2次分页的实现方法
2013/07/15 PHP
php生成图形验证码几种方法小结
2013/08/15 PHP
php打开远程文件的方法和风险及解决方法
2013/11/12 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
2014/11/19 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
2019/05/29 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
2019/06/14 PHP
javascript web页面刷新的方法收集
2009/07/02 Javascript
jQueryUI的Dialog的简单封装
2010/06/07 Javascript
javascript移动设备Web开发中对touch事件的封装实例
2014/06/05 Javascript
TypeScript具有的几个不同特质
2015/04/07 Javascript
基于jquery实现省市区三级联动效果
2015/12/25 Javascript
酷炫jQuery全屏3D焦点图动画效果
2016/03/22 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
Node.js笔记之process模块解读
2018/05/31 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
2018/08/13 Javascript
vue-router的两种模式的区别
2019/05/30 Javascript
Vue 实现复制功能,不需要任何结构内容直接复制方式
2019/11/09 Javascript
基于JS实现快速读取TXT文件
2020/08/25 Javascript
[41:11]完美世界DOTA2联赛PWL S2 Inki vs Magma 第一场 11.22
2020/11/24 DOTA
Python高级应用实例对比:高效计算大文件中的最长行的长度
2014/06/08 Python
Python编程中对super函数的正确理解和用法解析
2016/07/02 Python
python 获取网页编码方式实现代码
2017/03/11 Python
python基于pyDes库实现des加密的方法
2017/04/29 Python
Python实现判断给定列表是否有重复元素的方法
2018/04/11 Python
Python3中编码与解码之Unicode与bytes的讲解
2019/02/28 Python
Python openpyxl读取单元格字体颜色过程解析
2019/09/03 Python
python打包成so文件过程解析
2019/09/28 Python
python kafka 多线程消费者&amp;手动提交实例
2019/12/21 Python
使用python3 实现插入数据到mysql
2020/03/02 Python
Cotton On美国网站:澳洲时装连锁品牌
2016/10/25 全球购物
英国厨房与餐具用品为主的设计品牌:Joseph Joseph
2018/04/26 全球购物
四风问题班子对照检查材料
2014/09/27 职场文书
SpringCloud中分析讲解Feign组件添加请求头有哪些坑梳理
2022/06/21 Java/Android