新增效果图如下

编辑效果图如下

代码如下

const {

salesFollow: { info },

form: { getFieldDecorator, getFieldValue },

} = this.props;

const formItemLayout = {

labelCol: { span: 4 },

wrapperCol: { span: 12 },

};

getFieldDecorator('keys', { initialValue: info.timeList ? info.timeList : [] });

const keys = getFieldValue('keys') ? getFieldValue('keys') : [];

const paramFormItems = keys.map((k, index) => (

)}

key={k.index || k.index === 0 ? k.index : k}

required={false}

colon={false}

>

{getFieldDecorator(`paramStart_${k.id}`, {

initialValue: k.startTime ? moment(k.startTime) : null,

})(

)}

{getFieldDecorator(`paramEnd_${k.id}`, {

initialValue: k.endTime ? moment(k.endTime) : null,

})(

)}

this.remove(index)}

/>

));

可上课时间:

{

paramFormItems

}

添加可上课时间

增加,减少表单项方法

remove = (k) => {

// can use data-binding to get

const keys = this.props.form.getFieldValue('keys');

_.remove(keys,(d, i) => i === k );

// We need at least one passenger

// can use data-binding to set

this.props.form.setFieldsValue({

keys,

});

};

add = () => {

// can use data-binding to get

const keys = this.props.form.getFieldValue('keys');

const nextKeys = keys.concat([{ id: uuid }]);

uuid++;

// can use data-binding to set

// important! notify form to detect changes

this.props.form.setFieldsValue({

keys: nextKeys,

});

};

控制添加表单的个数可以通过控制keys的长度来实现

add = () => {

const { form } = this.props;

// can use data-binding to get

const keys = form.getFieldValue('keys');

if (keys.length === 1) {

message.error("最多只能添加一个!");

return;

}

const nextKeys = keys.concat([{ id: uuid }]);

// can use data-binding to set

// important! notify form to detect changes

form.setFieldsValue({

keys: nextKeys,

});

};

remove = (k) => {

// can use data-binding to get

const keys = this.props.form.getFieldValue('keys');

if (keys.length <= 1) {

message.error('请至少保留一个');

return;

}

_.remove(keys,(d, i) => i === k );

// We need at least one passenger

// can use data-binding to set

this.props.form.setFieldsValue({

keys,

});

};

提交表单组装数据方法

handleSubmit = () => {

const { form, } = this.props;

form.validateFields((errors, values) => {

const timeList = [];

for (let i = 0; i <= uuid; i++) {

if (values[`paramTime_${i}`]) {

if (!values[`paramStart_${i}`] || !values[`paramEnd_${i}`]) {

message.error('请选择上课时间');

return;

}

const time = values[`paramTime_${i}`] ? moment(values[`paramTime_${i}`]).format('YYYY-MM-DD') : null;

const start = values[`paramStart_${i}`] ? moment(values[`paramStart_${i}`]).format('HH:mm:ss') : null;

const end = values[`paramEnd_${i}`] ? moment(values[`paramEnd_${i}`]).format('HH:mm:ss') : null;

timeList.push({

queryStartDate: `${time } ${ start}`,

queryEndDate: `${time } ${ end}`,

});

}

}

console.info('timeList', timeList);

});

};

数据

组装数据前

组装数据后

引用到的组件

import moment from 'moment';

import { Button, Card,Cascader, Row, Col, message, DatePicker, Input, Form, Icon } from 'antd';

import TimePicker from 'antd/es/time-picker';

const FormItem = Form.Item;

let uuid = 100000;

编辑回显数据如下

因为用的是时间控件,所以提交和编辑回显的时候都需要做时间格式化处理,如果是其他控件可以省略这一步。

新增表单时控制初始化数据可以通过控制keys的长度来实现,如默认显示2个

getFieldDecorator('keys', { initialValue: info.timeList.length > 0 ? info.timeList : [1,2] });

antd 的form 表单怎么回显数据_antd design Form动态增减表单项(多个),组装数据及编辑回显,选择初始值,控制添加减少表单项数量等...相关推荐

  1. 提交表单到弹出窗口 Submit a form into a popup

    实例目的:一些网站不允许被包含在iframe中(例如paypal standard),为了实现让用户仍然留在本站的目的,下面的实例可供参考. 方法一: HTML的方式 DEMO <form id ...

  2. 【实习小tip】多层dialog弹窗遮罩问题、elementUI的form表单组件的select框在只读的情况下没办法拿到传来的数据、从弹窗子组件获取数据后需要刷新页面

    解决elementui多层dialog弹窗遮罩问题 弹窗套娃出现了整个屏幕都是遮罩层的问题,需要鼠标点击一下才能正常. 在弹窗组件代码上加上 append-to-body 就可以了,表示这个弹窗是嵌在 ...

  3. vue表单提交数组_ajax传递数组、form表单提交对象数组

    在JSP页面开发中,我们常常会用到form表单做数据提交,由于以前一直只是使用form表单提交单个对象,只要表单文本域的name值和接收的对象的属性名一致,那么传值就没有什么问题.不过,在前几天的开发 ...

  4. html表单的常用属性有哪些,html/form表单常用属性认识

    1.form表单常用属性练习 .form1 { margin: auto; height: 900px; width: 500px; text-align: center; line-height: ...

  5. shiro表单登录认证及退出(自定义form认证器)

    博主地址:http://blog.csdn.net/zcl_love_wx 注意:此文是基于springMVC框架的,所以关于springMVC的配置这里不说,后面有时间专门写一个shiro整合spr ...

  6. html表单 传递 符号,HTML源码中 form 标签的 enctype 属性

    定义:enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码.默认地,表单数据会编码为 "application/x-www-form-urlencoded".即在发 ...

  7. 表单php跳转页面跳转,form表单页面跳转方式提交练习

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 //form表单提交练习 /*新建一个form.html网页用来书写前端HTML表单*/ 表单提交练习 姓名: 年龄: 电话: 地址: QQ: 自我评价: ...

  8. html表单边框怎么加颜色?html form标签的边框颜色实例

    本篇文章主要的讲述了HTML表单的边框加颜色,可以更改任何你想要的颜色都可以,有实例解析,方便观看,接下来让我们一起来看看这篇关于HTML表单的边框颜色的文章吧 打造全网web前端全栈资料库(总目录) ...

  9. form通过ajax提交表单,Jquery通过Ajax方式来提交Form表单

    今天刚好看到Jquery的ajax提交数据到服务器的方法,原文是: 保存数据到服务器,成功时显示信息. jQuery 代码: $.ajax({ type: "POST", url: ...

  10. html表单调用js方法,使用js提交form表单的两种方法

    提交form表单的时候瑶族一些简单的验证,验证完后才能提交,避免无效提交. 1.当输入用户名和密码为空的时候,需要判断.这时候就用到了校验用户名和密码,这个需要在前端页面写:有两种方法,一种是用sub ...

最新文章

  1. 当您访问未加密的HTTP网站时,谁能看到您的数据?—Vecloud微云
  2. cookie中文乱码
  3. python怎么复制上面的语句_JAVA、python、Go的复制语句
  4. Remove One Element(贪心)
  5. 2020年跨行业跨领域工业互联网平台
  6. java成员变量的初始化_Java成员变量初始化过程
  7. Spring CGLlB动态代理
  8. mini2440-Openwrt启动信息
  9. Eclipse·Maven·构建SpringMVC简单工程-3
  10. 7时过2小时是几时_小姐姐花1万7租了一个2小时男友,全程上演偶像剧......
  11. Android应用源码英语四级单选助手答题类app源码下载
  12. 海量数据处理:经典实例分析
  13. 关于数据结构(c语言)中结构体声明的LNode, *LinkList
  14. 为资产分类定义折旧范围_2广东省农村集体经济组织固定资产分类及折旧办法(4月15日)...
  15. 为Exynos4412移植2022版U-Boot(一)步骤及其原理分析
  16. graphpad做柱状图_轻松搞定各种柱状图
  17. 计算机白板培训报道,学习电子白板心得体会
  18. Word文件总页码不含首页和目录设置方法
  19. 本地无需安装数据库,实现plsql远程连接数据库
  20. tinyint(1)与tinyint(3),int(1)与int(3),tiny(1)与int(1)区别

热门文章

  1. 智能卡检测控制系统检测m1这么操作_多联机制冷剂灌注操作方法
  2. 天龙八部linux 换win,Linux从菜鸟到大师之天龙八部 第三部文本编辑处理.doc
  3. python time sleep 阻塞 异步_python 之 并发编程(进程池与线程池、同步异步阻塞非阻塞、线程queue)...
  4. linux图形界面漏洞,ManageEngine DesktopCentral任意文件上传漏洞(CVE-2014-5007)
  5. ryzen linux 搭配显卡,R5 1500X配什么显卡好 适合AMD锐龙5 1500X搭配的显卡推荐
  6. python函数定义和调用练习_python函数的定义和调用
  7. MySQL(19)-----日期和时间函数
  8. 使用idea导入远程git版本库项目
  9. JVM对象分配和GC分布【JVM】
  10. HDU 6330--Visual Cube(构造,计算)