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

需求:有一个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()
       	}
   	}
    }

版权声明:本文为weixin_44369568原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。