react中使用了antd的input,如何修改精度和设置输入数据类型为Number,只能输入小数点后4位,并且不能输入'e E + - '这些特殊字符

6 篇文章 0 订阅

需求:有一个input框,要求只能输入数字,并且小数点后面输入4位,多余的部分就输入不进去,

自己使用了antd的input组件,至于小数点后四位,直接正则搞定,输入数据类型的话,设置type类型为number,但是发现还能输入’-’, ‘+’, ‘e’, ‘E’ 这些字符,于是通过以下方法实现了效果
<Input
         type="number"  //设置为number类型
         min={0}			//设置最小值为0
         onKeyPress={this.keyPress}     
         value={this.props.defaultValue}
         onChange={this.setDefaultValue}
        placeholder='请输入您喜欢的数字'
/>
                

	//设置默value值
  	setDefaultValue = e => { 
  	//通过正则判断如果输入的内容小数点后面超过4位,只取4位(\d{1,4})--->4代表4位,如果需要更多,可以直接更改数字
       e.target.value = e.target.value.replace(/^(-)*(\d+)\.(\d{1,4}).*$/, '$1$2.$3')
       this.setState({
            defaultValue: e.target.value,
      })
	//按下键盘时触发
	keyPress=(event)=>{
		  //只要输入的内容是'+-eE'  ,就阻止元素发生默认的行为
       	const invalidChars = ['-', '+', 'e', 'E']
       	 if(invalidChars.indexOf(event.key) !== -1){
          		event.preventDefault()
       	}
   	}
    }
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值