1.使用getFieldDecorator的rules规则

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

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

  • rules校验规则

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

更多高级用法可研究 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 后面的冒号 boolean true
extra 额外的提示信息,和 help 类似,当需要错误信息和提示文案同时出现时,可以使用这个。 string ReactNode  
hasFeedback 配合 validateStatus 属性使用,展示校验状态图标,建议只配合 Input 组件使用 boolean false
help 提示信息,如不设置,则会根据校验规则自动生成 string ReactNode  
label label 标签的文本 string ReactNode  
labelCol label 标签布局,同 <Col>组件,设置 span``offset值,如 {span: 3, offset: 12}或 sm: {span: 3, offset: 12} object  
required 是否必填,如不设置,则会根据校验规则自动生成 boolean false
validateStatus 校验状态,如不设置,则会根据校验规则自动生成,可选:'success' 'warning' 'error' 'validating' string  
wrapperCol 需要为输入控件设置布局样式时,使用该属性,用法同 labelCol object
  • 注意: 这种校验方法有一个不足之处,就是不使用getFieldDecorator的话没办法设置字段名,获取输入的值的时候不能用getFieldsValue和setFieldsValue等方法对表单进行赋值和取值。

参考

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

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

AntDesign Form表单字段校验的三种方式相关推荐

  1. element组件table表格/form表单显示弹窗的三种方式

    element组件table表格显示弹窗的两种方式 <el-table-columnlabel="地址"prop="Address"min-width=& ...

  2. php表单数据类型,form表单中enctype属性的三种类型

    1.form表单中enctype属性的三种类型 form表单中enctype属性可以用来控制对表单数据的发送前的如何进行编码,enctype有三种,分别为: multipart/form-data不对 ...

  3. 创建一对多表结构实例 /操作的三种方式

    例 1.注册App01  完成各项配置 2. 写完后自动生成一个id自增列(主键) 如果不想生成 自己写 创建两张表 3.执行创建语句 (其中还进行了一个小修改) 4.按照之前的方法 打开数据库 并输 ...

  4. form表单字段默认值

    form表单中input的text类型字段如果不填值的话,默认值为空串,即"": 我现在的需求是:让不填的字段值为 null. 实现方式:将这个字段的disabled设为true. ...

  5. php form表单提交方式,form表单提交数据的几种方式

    一.submit提交 一般表单提交通过type=submit实现,input type="submit",浏览器显示为button按钮,通过点击这个按钮提交表单数据跳转到/url. ...

  6. PHP表单提交的方式有哪两种,form表单提交数据的几种方式

    一.submit提交 在form标签中添加action(提交的地址)和method(post),且有一个submit按钮()就可以进行数据的提交,每一个input标签都需要有一个name属性,才能进行 ...

  7. form表单提交数据的两种方式——submit直接提交、AJAX提交

    submit提交 form表单本身提供action属性,在action属性中填写数据提交地址后,点击submit类型的按钮即可将数据提交至指定地址,代码如下: <form action=&quo ...

  8. CBV装饰校验的三种方式session

    代码如下: from django.shortcuts import render,HttpResponse,redirect from django.views import View # Crea ...

  9. 数据库表在join时的三种方式

    sql 执行时最重要的两步: 1)通过什么方式获取到数据(index only scan.index scan.table full scan) 2)获取到数据后用什么方式join出结果. 下面说的是 ...

最新文章

  1. python之⾯向对象-继承
  2. LLDB命令查看内存的分配历史
  3. python3 模板库 好用_良心整理15个超级Python库,不要错过
  4. 《精通Nginx》——2.8 完整的样本配置文件
  5. iOS - Swift NSValue 值
  6. Windwos Server 2016 远程桌面授权
  7. Spring中的@Cacheable开销
  8. 双击java安装包没有反应_win7系统双击JeR安装包没有任何反应的解决方法
  9. 【Unity】unity3d客户端网络框架
  10. 千年3步法外挂 千年3脚本 千年3外挂 千年3最新外挂
  11. new操作符具体干了什么
  12. 什么是pid控制算法_智能车运动控制 ——PID简介
  13. 实现基于小米的电子商务平台架构
  14. 国内好用的邮箱评选,电子邮箱大全有你的吗?
  15. 计算机桌面上的声音图标没了怎么办,电脑声音图标不见了怎么办超详细教程
  16. disallow root login remotely 不起作用?
  17. Joel谈优秀软件开发-摘录
  18. 2023-03-06
  19. ansys 常见命令集合
  20. word文件解除保护模式让其可编辑

热门文章

  1. vim 中的 quickfix 指令
  2. switch和toggle在软件开发中的含义和区别
  3. python调用zabbixapi接口_python调用zabbix api获取主机信息
  4. html中引入js柱状图,Echarts.js 图表在layui中的引用
  5. 西门子伺服电机选型手册_记,新入行维修电工大胆拆解伺服电机和编码器的经历...
  6. androidstudio --debug 出现 source code not match bytecode
  7. pat 乙级 1003 我要通过!(C++)
  8. 光端机的分类有哪些?
  9. 21秋期末考试工商企业文化10631k2
  10. 【渝粤教育】国家开放大学2018年春季 4992T农村文化建设 参考试题