之前很少用react做项目,最近入职新公司,用的react,在自己的摸索过程中,慢慢会记录一些使用方法。今天简单记录一下使用antd 4.0版本的Form表单校验,直接代码。

需要购买阿里云产品和服务的,点击此链接领取优惠券红包,优惠购买哦,领取后一个月内有效:https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=fp9ccf07

1、代码:

import React, {Component} from 'react'
import { Form, Input, Row, Col, Select, Button } from 'antd' class FormDemo extends Component {
constructor(props){
super(props)
} formRef = React.createRef() componentDidMount(){
const leftMenu = document.getElementById('left_menu')
leftMenu.style.minWidth = '0px'
leftMenu.style.maxWidth = '0px'
} submit =()=>{  // 点击提交时,做最后的校验
const form = this.formRef.current
form.validateFields().then((values)=>{  // 如果全部字段通过校验,会走then方法,里面可以打印出表单所有字段(一个object)
console.log('成功')
console.log(values)
}).catch((errInfo)=>{  // 如果有字段没听过校验,会走catch,里面可以打印所有校验失败的信息
console.log('失败')
    console.log(errInfo)
})
} render(){
const layout = {
labelCol: { span: 8 },
wrapperCol: { span: 16 },
}
return (
<div>
<h3>表单校验-demo</h3>
<div>
<Form ref={this.formRef}
{...layout}
// onFinish={this.onFinish}
style={{width: '600px',margin:'0 auto'}}
>
<Row gutter={24}>
<Col span={24} key="select1">
<Form.Item label="下拉框1" name="select1"
rules={[{ required: true, message: '请输入用户名!' },
]}
>
<Select
mode="multiple"
showSearch
placeholder="下拉框1"
// onChange={this.handleChangeSchool}
style={{ width: '100%' }}
>
<Option key='1' value='11'>aa</Option>
<Option key='2' value='22'>bb</Option>
<Option key='3' value='33'>cc</Option>
</Select>
</Form.Item>
</Col>
<Col span={24} key="text1">
<Form.Item label="密码" name="text1"
rules={[
{required: true, message: '请输入密码!' },
{min: 6, message: '密码至少6位!' },
{max: 10,message: '密码最长10位!'},
]}
>
<Input placeholder="text1" />
</Form.Item>
</Col>
<Col span={24} key="text2">
<Form.Item label="确认密码" name="text2"
rules={[
{required: true, message: '请输入text1!' },
// {min: 6, message: '确认密码至少6位!' },
// {max: 10,message: '确认密码最长10位!'},
{
validator: (_, value) =>{
const form = this.formRef.current
let text1 = form.getFieldValue('text1')
if(value && (value.length < 6 || value.length > 10)) {
return Promise.reject('text1必须是6~10位')
}else if(text1 != value){
return Promise.reject('两次密码不一致')
}else {
return Promise.resolve()
}
}
}
]}
>
<Input placeholder="text2" />
</Form.Item>
</Col>
<Col span={24} key="text3">
<Form.Item label="文本框3" name="text3">
<Input type="number" placeholder="text3" />
</Form.Item>
</Col>
</Row>
<Row>
<Col span={24} style={{ textAlign: 'right' }}>
<Button type="primary" onClick={this.submit} style={{ marginRight: '8px' }}>提交</Button>
</Col>
</Row>
</Form>
</div>
</div>
)
}
} export default FormDemo

2、校验效果

React-Antd4的Form表单校验的更多相关文章

  1. 应用二:Vue之ElementUI Form表单校验

    (注:本文适用于有一定Vue基础或开发经验的读者,文章就知识点的讲解不一定全面,但却是开发过程中很实用的)   表单校验是前端开发过程中最常用到的功能之一,根据个人的工作经验总结在此对表单校验功能的基 ...

  2. iview form表单数值类型校验「iview自定义form表单校验器」

    摘录iview表单验证 Form 组件基于 sync-validator 实现的数据验证,给 Form 设置属性 rules,同时给需要验证的 FormItem 设置属性 prop 指向对应字段即可. ...

  3. vue+iview的form表单校验总结

    这篇文章时关于如何使用iview的form表单校验.主要学习如何使用form校验(以校验文字长度为例),以及如何动态添加校验规则和异步校验. 1.为需要校验的表单添加form标签 <!--注意: ...

  4. 封装react antd的form表单组件

    form表单在我们日常的开发过程中被使用到的概率还是很大的,比如包含了登录.注册.修改个人信息.新增修改业务数据等的公司内部管理系统.而在使用时这些表单的样式如高度.上下边距.边框.圆角.阴影.高亮等 ...

  5. element-ui Form表单校验

    使用element-ui自带的表单校验,注意几个点: 1.el-form通过rules属性,绑定校验规则 2.el-form-item的prop属性,设置为需要校验的字段名 3.提交后二次校验 sav ...

  6. vue自定义轻量级form表单校验

    遇到了form表单提交的需求,找了vue的组件觉得不够灵活,有时间自己写了一个. 调用方法 全局引入注册: import va from 'global/js/va' va.install(Vue); ...

  7. react + antd Form表单校验

    非空限制 {getFieldDecorator('name', { rules: [{ required: true, message: '名称不能为空', }],})( <Input plac ...

  8. vue 表单校验(二)

    vue 表单校验(二) vue element-ui表单校验 由于现在使用element-ui进行form表单校验,因而使用其自带的校验规则进行校验,发现有些并不是那么好校验,或者说是校验起来很繁琐, ...

  9. 实现一个兼容eleUI form表单的多选组件

    本质上是实现了一个eleUI select组件中的创建条目功能的组件,仅仅是将dropdown的选择框变成了label形式.支持eleUI的form表单校验,同时组件也提供了组件内自定义校验的方法.常 ...

随机推荐

  1. OJ最大值最小化问题(分发书本)

    该类问题通用描述: 有n个物体,每个物体都有一个权值V[i],现在将n个物体连续分成m个部分,m个部分有一个部分会拿到最多的权值v.求所有分配方式中最小的v. 典型题目: 分发书本,宠物屋涂色等. 问 ...

  2. v-on精炼

    v-on的介绍 在Vue中,常使用v-on指令用于监听事件的发生,v-on指令就类似于JavaScript中的addEvelistener()方法 v-on的基本使用 <div id=" ...

  3. C++ primer plus读书笔记——第2章 开始学习C++

    第2章 开始学习C++ 1. endl确保程序继续运行前刷新输出(将其立即显示在屏幕上),而使用"\n"不提供这样的保证,这意味着在有些系统中,有时可能在您输入信息后才会出现提示. ...

  4. 使用Optional处理null

    一.聊聊NullPointerException   相比做Java开发的,见到NullPointerException肯定不陌生吧,可以说见到它深恶痛绝.在开发时认为不会出现NullPointerE ...

  5. 大数据开发-Flink-1.13新特性

    介绍 大概4月,Flink1.13就发布了,参加 了Flink1.13 的Meetup,收获还是挺多,从大的方面讲就是FlingSql的改进和优化,资源调度管理方面的优化,以及流批一体Flink在运行 ...

  6. java集合-哈希表HashMap

    一.简介 HashMap是一个散列表,是一种用于存储key-value的数据结构. 二.类图 public class HashMap<K,V> extends AbstractMap&l ...

  7. [Linux] Shell 脚本实例(超实用)

    文件操作 为文件(test.sh)增加执行权限 chmod +x test.sh 列出当前文件夹下所有文件(每行输出一个) 1 #!/bin/bash 2 dir=`ls ./` 3 for i in ...

  8. ipmitool使用手册

    ipmitool使用手册原创xinqidian_xiao 最后发布于2018-07-05 12:15:47 阅读数 17948 收藏展开一.查找安装包 查看ipmitool属于哪个安装包 #yum p ...

  9. IT菜鸟之网站搭建(emlog)

    由多个网页组成的一种集合,叫做网站 网站分为:静态网站.动态网站  静态网站:不会因为时间.地点.用户角色等因素发生内容改变的网站 动态网站:会因为时间.地点.用户角色等因素发生内容改变的网站 注意: ...

  10. shell基础之后台运行脚本

    使shell脚本后台执行,基本的方法有两种,第一种为在脚本后面追加&符号,第二种为在脚本前面使用nohup命令,结尾再追加&符号 一.后台运行脚本1 1.执行脚本test.sh:./t ...