reactjs - onChange最后一个字符不会在reactjs中删除?
问题描述
这里我有一个输入字段,这个输入字段是数字类型所以我对这个数字类型的输入字段进行验证,见代码(它只允许数字)它工作得很好但是在输入一些整数之后,当我去制作空输入字段时不删除输入字段中的最后一个字符如何也删除?
<Input
name='monthlyPrice'
type='number'
value={this.state.monthlyPrice}
onChange={this.onInputChangeValue}
/>
onInputChangeValue(e){
if(e.target.value.match(/^\d+(?:\.\d+)?$/)) {
this.setState({ [e.target.name]: e.target.value })
}
}
解决方案
您需要||
从上一个问题中添加您的背部:
<Input
name='monthlyPrice'
type='number'
value={this.state.monthlyPrice}
onChange={this.onInputChangeValue}
/>
onInputChangeValue(e){
if(e.target.value == "" || e.target.value.match(/^[1-9]\d*\.?\d*$/)) {
this.setState({ [e.target.name]: e.target.value })
}
}
注意:这仍然需要您在提交表单之前进行检查,因为这将允许他们离开以.
字符结尾的字段。如果你愿意,你也可以这样做onBlur
。对此进行测试的正则表达式是^[1-9]\d*(?:\.\d+)?$
注 2:此正则表达式基于 OP 的第一个问题,要求第一个数字为 1-9
推荐阅读
- html - 设置 div 以填充页面并使其在附加时也保持该高度
- closures - Tcl:惯用的[关闭]
- python-3.x - 辅音卡在猪拉丁语中
- reactive-programming - 如何在反应式编程中创建计数器映射?
- google-sheets - 将多列数据转换为三元组的行,其类型列的值基于原始列名
- python - random.choice 在计算其参数时存在问题
- excel - VBA 将文本列转换为 ASCII 值
- python - 了解 Python 函数
- autoit - 如何处理记录用户活动的 AutoIt 脚本的输出?
- ajax - 如何在 VueJS 中向 Axios 调用添加标头?