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

chaoxiZ 2018-12-18 原文

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

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"
      hasFeedback
      validateStatus="success"
    >
      <Input placeholder="I'm the content" id="success" />
</FormItem>

<FormItem
      {...formItemLayout}
      label="Warning"
      hasFeedback
      validateStatus="warning"
    >
      <Input placeholder="Warning" id="warning" />
</FormItem>

<FormItem
      {...formItemLayout}
      label="Fail"
      hasFeedback
      validateStatus="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

发表于 2018-12-18 14:07 朝曦Z 阅读() 评论() 编辑 收藏

 

版权声明:本文为chaoxiZ原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/chaoxiZ/p/10136780.html

AntDesign Form表单字段校验的三种方式的更多相关文章

  1. SAAS云平台搭建札记: (四) AntD For React使用react-router-dom路由接收不同参数页面不刷新的问题

        在.net开发员眼里,如果使用MVC,根据路由匹配原则,可以通过各种方式接收参数,比如 /Post/L […]...

  2. Ory Kratos 用户认证

    Ory Kratos 为用户认证与管理系统。本文将动手实现浏览器(React+AntD)的完整流程,实际了解下 […]...

  3. SAAS云平台搭建札记: (三) AntDesign + .Net Core WebAPI权限控制、动态菜单的生成

    我们知道,当下最火的前端框架,非蚂蚁金服的 AntDesign 莫属,这个框架不仅在国内非常有名,在国外Git […]...

  4. (二)React Ant Design Pro + .Net5 WebApi:前端环境搭建

    Ant Design Pro v5 环境搭建,相关内容简介。小试牛刀,搞一个登录接口,准备对接我们的后端Api […]...

  5. Vue3: 如何以 Vite 创建,以 Vue Router, Vuex, Ant Design 开始应用

    本文代码: https://github.com/ikuokuo/start-vue3 在线演示: https […]...

随机推荐

  1. javascript实现数组排序的方法

    前言 排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列,当然排序也是 […]...

  2. Windows 下开启FTP服务并创建FTP用户

    Windows 下开启FTP服务,并创建用户 此教程教你怎么开启 Windows 的 FTP 服务,并创建用于 […]...

  3. sscanf高级用法级正则表达式 sscanf高级用法级正则表达式

    sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源。 […]...

  4. Java虚拟机-类加载机制

    目录 概述 类加载的时机 加载 类加载的过程 加载 验证 准备 解析 初始化 类加载器 类与类加载器 双亲委派 […]...

  5. Windows10 中的字母映射表

    有很多朋友为寻找特殊字符串而感到烦恼, windows10中的字符映射表有所有字体 包含的特殊符号 windo […]...

  6. 查看本机开放的端口号,查看某个端口号是否被占用,查看被占用的端口号被哪个进程所占用,如何结束该进程 – 如果蜗牛有爱情

    查看本机开放的端口号,查看某个端口号是否被占用,查看被占用的端口号被哪个进程所占用,如何结束该进程 利用快捷键 […]...

  7. 如何做seo优化才能获取搜索引擎排名?

    现在网络上有很多网站,但是排名和流量都不理想,所以很多企业会很苦恼。所以我们经常思考如何使网站被搜索引擎喜欢, […]...

  8. node 和npm 版本更新 – Kevin_zheng

    node 和npm 版本更新 node 版本更新 由于公司要用NG-ZORRO,于是我就跑到官网先看看demo […]...

展开目录

目录导航