AntDesign Form表单字段校验的三种方式

1.使用getFieldDecorator的rules规则

最简单的方法就是使用getFieldDecorator中的rules验证。rules中定义校验规则,message为校验不通过时的提示文字。

{getFieldDecorator('inputContent', {rules: [{required: true, message: '请输入内容!',}],})(<Input />
)}

 

  • rules校验规则

参数说明类型默认值
enum枚举类型string-
len字段长度number-
max最大长度number-
message校验文案stringReactNode 
min最小长度number-
pattern正则表达式校验RegExp-
required是否必选booleanfalse
transform校验前转换字段值function(value) => transformedValue:any-
type内建校验类型,可选项string'string'
validator自定义校验(注意,callback 必须被调用)function(rule, value, callback)-
whitespace必选时,空格是否会被视为错误booleanfalse

更多高级用法可研究 async-validator。

2.使用getFieldDecorator的validator自定义校验

validator可以自定义校验规则,适用于无法用rules校验规则校验的情况,比如校验再次输入密码与前一次输入的密码是否相同。其中,参数val为输入的值,callback必须被调用,是校验失败时的回调,内容为提示文字。

handleValidator = (rule, val, callback) => {if (!val) {callback();}let validateResult = ...;  // 自定义规则if (!validateResult) {callback('请输入正确的内容!');}callback();}
{getFieldDecorator('validator', {rules: [{required: true,message: '请输入内容'}, {validator: this.handleValidator}]
})(<input />
)}
  • 注意:一个 Form.Item 建议只放一个被 getFieldDecorator 装饰过的 child,当有多个被装饰过的 child 时,help required validateStatus 无法自动生成。此时可用下面一种方法校验。

3.使用validateStatus自定义校验

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

  • validateStatus: 校验状态,可选 'success', 'warning', 'error', 'validating'。
  • hasFeedback:用于给输入框添加反馈图标。
  • help:设置校验文案。
<FormItem{...formItemLayout}label="Success"hasFeedbackvalidateStatus="success"><Input placeholder="I'm the content" id="success" />
</FormItem><FormItem{...formItemLayout}label="Warning"hasFeedbackvalidateStatus="warning"><Input placeholder="Warning" id="warning" />
</FormItem><FormItem{...formItemLayout}label="Fail"hasFeedbackvalidateStatus="error"help="Should be combination of numbers & alphabets"><Input placeholder="unavailable choice" id="error" />
</FormItem>
三种校验状态
  • 可用属性
参数说明类型默认值
colon配合 label 属性使用,表示是否显示 label 后面的冒号booleantrue
extra额外的提示信息,和 help 类似,当需要错误信息和提示文案同时出现时,可以使用这个。stringReactNode 
hasFeedback配合 validateStatus 属性使用,展示校验状态图标,建议只配合 Input 组件使用booleanfalse
help提示信息,如不设置,则会根据校验规则自动生成stringReactNode 
labellabel 标签的文本stringReactNode 
labelCollabel 标签布局,同 <Col>组件,设置 span``offset值,如 {span: 3, offset: 12}或 sm: {span: 3, offset: 12}object 
required是否必填,如不设置,则会根据校验规则自动生成booleanfalse
validateStatus校验状态,如不设置,则会根据校验规则自动生成,可选:'success' 'warning' 'error' 'validating'string 
wrapperCol需要为输入控件设置布局样式时,使用该属性,用法同 labelColobject
  • 注意: 这种校验方法有一个不足之处,就是不使用getFieldDecorator的话没办法设置字段名,获取输入的值的时候不能用getFieldsValue和setFieldsValue等方法对表单进行赋值和取值。

参考

https://ant.design/components/form-cn/#components-form-demo-dynamic-rule

转载于:https://www.cnblogs.com/chaoxiZ/p/10136780.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351862.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab的max与min函数

max作用于矩阵有比较并保留较大数字的功能。如下所示&#xff1a; 矩阵a中每个元素与2相比较取较大值&#xff0c;1比2小&#xff0c;所以替换为2. 矩阵a中每个元素与3相比取较小值&#xff0c;4比3小&#xff0c;所以替换为3. a 1 2 3 4 K>> max(a,2)…

JAVA Servlet API简介及接口与类的用法

本章介绍了Java Servlet API中的主要的接口与类的用法&#xff0c;并且介绍了它们的生命周期。表4-1 对接口与类的作用与生命周期作了归纳。这些接口与类的生命周期都由Servlet容器来控制&#xff0c;容器会在特定的时刻创建或销毁它们的实例。 表4-1 Servlet API中的主要的接口…

Spring框架的事务管理的基本概念

1. 事务&#xff1a;指的是逻辑上一组操作&#xff0c;组成这个事务的各个执行单元&#xff0c;要么一起成功,要么一起失败&#xff01; 2. 事务的特性* 原子性* 一致性* 隔离性* 持久性3. 如果不考虑隔离性,引发安全性问题* 读问题:* 脏读:* 不可重复读:* 虚读:* 写问题:* 丢失…

python rest 框架_python-更新用户REST框架Django

我需要在REST框架中更新我的用户views.pyclass UserUpdate(APIView):permission_classes (permissions.IsAuthenticated,)def post(self,request):userUser.objects.get(idrequest.user.id)try:user_serializerUserSerializer(request.user,datarequest.data, partialTrue)if …

matlab将满足某一条件的矩阵元素置零

想把矩阵中小于100的元素置零&#xff0c;有两种方法&#xff1a; 方法一&#xff1a;S(S<100)0; 方法二&#xff1a;S(find(S<100))0; 原理&#xff1a; A [ 1 2; 3 4]; B (A>2) %找到大于2 的位置索引 B 0 0 1 1 %形成布尔矩阵 A(B)0 %将对…

linux nona怎么用_nano命令_Linux nano 命令用法详解:字符终端文本编辑器

nano是一个字符终端的文本编辑器&#xff0c;有点像DOS下的editor程序。它比vi/vim要简单得多&#xff0c;比较适合Linux初学者使用。某些Linux发行版的默认编辑器就是nano。nano命令可以打开指定文件进行编辑&#xff0c;默认情况下它会自动断行&#xff0c;即在一行中输入过长…

4g内存 堆内存分配多少_我需要多少内存

4g内存 堆内存分配多少什么是保留堆&#xff1f; 我需要多少内存&#xff1f; 在构建解决方案&#xff0c;创建数据结构或选择算法时&#xff0c;您可能会问自己&#xff08;或其他人&#xff09;这个问题。 如果此图包含1,000,000条边并且我使用HashMap进行存储&#xff0c;此…

centos下网络配置方法(网关、dns、ip地址配置)

centos网络配置实例 1&#xff0c;配置DNS vi /etc/resolv.conf 加入: 复制代码代码如下:nameserver 192.168.0.1 nameserver 8.8.8.8nameserver 8.8.4.42&#xff0c;配置网关&#xff1a; vi /etc/sysconfig/network 加入&#xff1a; GATEWAY192.168.0.1 完整的如下&#xf…

matlab的repmat函数

B repmat(A,m,n) 1.作用&#xff1a;将矩阵A的内容堆叠在mxn大小的矩阵B中 2.应用&#xff1a; Brepmat([1 2;3 4],3,2) B 1 2 1 2 3 4 3 4 1 2 1 2 3 4 3 4 1 2 1 2 3 4 …

Alias Method解决随机类型概率问题(别名算法)

举个例子&#xff0c;游戏中玩家推倒了一个boss&#xff0c;会按如下概率掉落物品&#xff1a;10%掉武器 20%掉饰品 30%掉戒指 40%掉披风。现在要给出下一个掉落的物品类型&#xff0c;或者说一个掉落的随机序列&#xff0c;要求符合上述概率。 一般人会想到的两种解法 第一种算…

centos mysql php tomcat_Linux 安装JDK Tomcat MySQL的教程(使用Mac远程访问)

一 环境阿里云服务器: CentOS 7.4 64位(基于RedHat)本机: macOS High Sierra二 压缩包三 文件传输输入SFTP命令连接 -> 输入实例登录密码sftp root公网IP上传put 本地文件 服务器路径下载get 服务器文件 本地路径四 远程访问输入SSH命令连接 ->输入实例登录密码ssh root公…

Java时间和日期指南

长期以来&#xff0c;正确处理日期&#xff0c;时间&#xff0c;时区&#xff0c;夏时制&#xff0c;and年等一直是我的烦恼。 本文并不是一个全面的指南时域&#xff0c;请参阅日期和时间在Java中 -更详细&#xff0c;但略有下降&#xff0c;ekhem&#xff0c;日期。 它仍然是…

Java项目打war包的方法

最近好忙好忙&#xff0c;整理下心情给大家分享下自己在工作中遇到的一点小技巧&#xff0c;希望给遇到同样麻烦的同学一点帮助。 我们知道Java项目打war包可以在Eclipse和MyEclipse工具中自动打包&#xff0c;就是右键&#xff0c;然后导出war包就可以了&#xff0c;可是我发现…

matlab 的cat函数

cat&#xff1a;用来联结数组 1、用法&#xff1a;C cat(dim, A, B) 按dim来联结A和B两个数组。 C cat(dim, A1, A2, A3, ...) 按dim联结所有输入的数组。 2、举例 acat(3,A,B) 左括号后的3表示构造出的矩阵维数&#xff1b;在新的矩阵中第1、2维就是A和B这两个矩…

charles抓取手机APP,配置正确却抓不到数据

1、确保电脑的防火墙是关闭状态 2、如果还是不行的话&#xff0c;把手机wifi断掉后重新连接 转载于:https://www.cnblogs.com/ding-daisy/p/10141843.html

composer查看当前镜像取消_国内全量镜像大全

# 国内全量镜像大全**配置文件.gitignore **json{"name": "topthink/think","description": "the new thinkphp framework","type": "project","keywords": ["framework","thinkphp&quo…

利用C语言创建和使用DLL文件

有感于讲C语言的DLL文件的文章很少&#xff0c;自己查了半天&#xff0c;写了这么个非常简单的教程。自己也是摸C语言不久&#xff0c;依然感觉处于编程苦手的阶段。1&#xff09;为什么使用DLL文件C语言复用代码有很多的形式&#xff0c;利用动态链接库&#xff08;DLL&#x…

vba判断文件编码格式_如何在VBA判断EXCEL或WORD文件已经打开,并用代码关闭

谢谢寻欢&#xff0c;原来核心就是GETOBJECT&#xff0c;特帖帮助内容&#xff0c;与大家分享&#xff1a;GetObject 函数示例该示例使用 GetObject 函数来获取对指定的 Microsoft Excel 的工作表 (MyXL) 的引用。它使用工作表的 Application 属性来显示或关闭 Microsoft Excel…

spring-service.xml 模板

ssm模板<?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns:context"http://www.springframework.org/…

配置编译win7+VS2017+opencv4.0.1+contrib4.0.1

一、注意 1、opencv个各个版本并不是支持所有的VS版本&#xff0c;如opencv4.0.1支持vc14和vc15&#xff0c;而VS2013是vc12&#xff0c;配置起来会出错。 VS是一个集成开发环境&#xff0c;有不同的版本如VS2013&#xff0c;VS2015; vc是一个c的编译器&#xff0c;也有不同的…