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 相关文章推荐
非常漂亮的JS代码经典广告
Oct 21 Javascript
用JavaScript修改CSS属性的代码
May 06 Javascript
javascript中如何处理引号编码&amp;#034;
Aug 15 Javascript
javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法详解)
Dec 16 Javascript
一个JavaScript的求爱小特效
May 09 Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
Jun 12 Javascript
Dropzone.js实现文件拖拽上传功能(附源码下载)
Nov 22 Javascript
高效的jQuery代码编写技巧总结
Feb 22 Javascript
vue组件实践之可搜索下拉框功能
Nov 25 Javascript
基于 vue-skeleton-webpack-plugin 的骨架屏实战
Aug 05 Javascript
layui按条件隐藏表格列的实例
Sep 19 Javascript
JavaScript正则表达式验证登录实例
Mar 18 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 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
2012/12/07 PHP
PHP使用flock实现文件加锁的方法
2015/07/01 PHP
thinkPHP下ueditor的使用方法详解
2015/12/26 PHP
php格式文件打开的四种方法
2018/02/24 PHP
php用户名的密码加密更安全的方法
2019/06/21 PHP
如何获取JQUERY AJAX返回的JSON结果集实现代码
2012/12/10 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
2012/12/11 Javascript
使用jquery 简单实现下拉菜单
2015/01/14 Javascript
WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)
2016/01/26 Javascript
JavaScript实现的微信二维码图片生成器的示例
2016/10/26 Javascript
js通过classname来获取元素的方法
2016/11/24 Javascript
JS实现浏览器打印、打印预览示例
2017/02/28 Javascript
详解VUE中v-bind的基本用法
2017/07/13 Javascript
全面解析jQuery中的$(window)与$(document)的用法区别
2017/08/15 jQuery
薪资那么高的Web前端必看书单
2017/10/13 Javascript
webpack4 处理SCSS的方法示例
2018/09/03 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
2019/11/11 jQuery
关于ES6尾调用优化的使用
2020/09/11 Javascript
Vue用mixin合并重复代码的实现
2020/11/27 Vue.js
[43:57]Liquid vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python实现Const详解
2015/01/27 Python
python实现批量监控网站
2016/09/09 Python
利用标准库fractions模块让Python支持分数类型的方法详解
2017/08/11 Python
Python操作json的方法实例分析
2018/12/06 Python
Python模拟百度自动输入搜索功能的实例
2019/02/14 Python
Python2 与Python3的版本区别实例分析
2020/03/30 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
详解如何修改python中字典的键和值
2020/09/29 Python
python 制作磁力搜索工具
2021/03/04 Python
李维斯德国官方网上商店:Levi’s德国
2016/09/10 全球购物
LivingSocial英国:英国本地优惠
2019/02/22 全球购物
为女性购买传统的印度服装和婚纱:Kalkifashion
2019/07/22 全球购物
学习新党章思想汇报
2014/01/09 职场文书
结婚老公保证书
2015/02/26 职场文书
同学聚会通知书
2015/04/20 职场文书
浅谈sql_@SelectProvider及使用注意说明
2021/08/04 Java/Android