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