antd 如何清除表单验证(联动表单验证)

前言提示,antd官网的文档说明怎么样看参数?其实是参考的typeScript的规则写法:

 

备注(投标的3种状态):

当我们使用antd的Form表单时,可能会遇到2个表单联动的情况,试想一下以下场景:

投标利率我们设置在(3%-7%)以内,也就是说,输入框不能取值的范围是3-7(符合3-7就触发不了表单验证了!),当投标状态是“投标”(共三种)时,该投标利率表单验证生效,如果选择其他状态,则不生效,如果原本已有验证提示,需要清空原本的验证

 

 

那么,如何清除表单验证?清除表单验证antd提供了1个api(resetFields):

// 众所周知,antd的Form组件必须经过Create才能找到this.props.form属性,在此不再展开

// export default Form.create()(ProjInfoForm)  <!--ProjInfoForm是组件名-->

 

使用以下两句解决问题:

// 重置表单tenderStatus属性的值以及表单验证提示(值会变成initialValue的值)

this.props.form.resetFields(['tenderStatus']);

// 将我们重置之前储存好的属性值,给联动表单的属性重新赋值,否则会变成initialValue的值

this.props.form.setFieldsValue({ tenderStatus: status });

 

完整代码如下: 

<FormItem>

                      {getFieldDecorator(postField || dataIndex, {

                        initialValue: tenderRate,

                        rules: [

                          {

                            validator: (rule, value, callback) => {

                              if (prdApplySection1 === 0 && prdApplySection2 === 0) {

                                callback()

                                return

                              }

                              // console.log('this.props.form.getFieldsValue()', this.props.form.getFieldsValue())

                              const status = this.props.form.getFieldsValue().tenderStatus;

                              if (+status === 2) {

                                if (+value < +prdApplySection1 || +value > +prdApplySection2) {

                                  callback(`不在申购区间内,申购区间:${prdApplySection1}%~${prdApplySection2}%, 或者将投标状态改为”意向”`)

                                } else {

                                  this.props.form.resetFields(['tenderStatus']);

                                  this.props.form.setFieldsValue({ tenderStatus: status });

                                  callback();

                                }

                              }

                              callback()

                            }

                          },

                          { required: true, message: `请输入${title}` }

                        ],

                      })(

                        <InputNumber

                          disabled={sessionStorage['scaleType'] == '0'}

                          placeholder="投标单位"

                          //formatter={value => `${value}${sessionStorage['unit']}`}

                          //parse={value => value.replace(/(%|bp|元)*/g, '')}

                          style={{ width: "100%" }}

                          max={100}

                          min={0}

                        />

                      )}

</FormItem>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hzxOnlineOk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值