reactjs 控制输入框最多只能输入两位小数

1,首先要知道控制两位小数的正则表达式

const reg = /^(-)*(\d+)\.(\d\d).*$/;

value.replace(reg, "$1$2.$3")

2,我用的是antd from 组件

 

<Item colon={false} label={<span className="wo-form-item-label">质检评分:</span>} style={{ width: "185px", marginRight: 0 }}>

{getFieldDecorator("qualityScoreStart")(

<Input type="number" name="qualityScoreStart" style={{ width: 75, textAlign: "center" }} placeholder="0.00" onChange={this.controlpoint}/>

)}

</Item>

以上是代码和实现的效果,

因为我用的是form的组件所以我改变input 的值用的是this.props.form.setFieldsValue

第一次尝试实现: 在onchange 的时候监听input

controlpoint = e => {

const reg = /^(-)*(\d+)\.(\d\d).*$/;

this.props.form.setFieldsValue({

qualityScoreStart: e.target.value.replace(reg, "$1$2.$3")

});

}

但是没有效果,qualityScoreStart: e.target.value.replace(reg, "$1$2.$3") 这样写好像不行,增加了一句e.target.value = e.target.value.replace(reg, "$1$2.$3");这样就可以了。我也不知道为啥

controlpoint = e => {

const reg = /^(-)*(\d+)\.(\d\d).*$/;

e.target.value = e.target.value.replace(reg, "$1$2.$3");

this.props.form.setFieldsValue({

qualityScoreStart: e.target.value

});

}

一个页面中好几个这样的input ,也不能写好几遍这个函数呀,于是我就给每个input 增加了个name 用于区分

代码如下:

controlpoint = e => {

const reg = /^(-)*(\d+)\.(\d\d).*$/;

e.target.value = e.target.value.replace(reg, "$1$2.$3");

if (e.target.name === "qualityScoreStart") {

this.props.form.setFieldsValue({

qualityScoreStart: e.target.value

});

} else if (e.target.name === "qualityScoreEnd") {

this.props.form.setFieldsValue({

qualityScoreEnd: e.target.value

});

} else if (e.target.name === "reQualityScoreStart") {

this.props.form.setFieldsValue({

reQualityScoreStart: e.target.value

});

} else if (e.target.name === "reQualityScoreEnd") {

this.props.form.setFieldsValue({

reQualityScoreEnd: e.target.value

});

}

};

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值