我想在反应输入中只允许带小数的数字,并根据获得的值做一些条件,低于我尝试的值,但效果很好,但存在以下问题
<FormInput
name="amount"
label="Amount"
onChange: this.handleChange,
startAdornment: (<InputAdornment position="start">$</InputAdornment>),
pattern: '[0-9]*',
/>
handleChange = (event) => {
const { value } = event.target;
const validValue = Math.abs(parseFloat(value));
if (validValue && !isNaN(validValue)) {
// some condition...
// i have some other set of value that i compare here with input got like if
// 1) validValue > someValue, then this.setState({ someValue })
// 2) validValue <= someValue, then this.setState({ validValue })
// 3) else this.setState({ validValue: 0 })
}
}
但是这里的问题是我无法与其他数字一起输入十进制,例如我需要输入1.2,然后首先我需要输入12,然后在2之前添加'。'(十进制),所以请帮我什么我可以做的是允许带小数点的数字和其他数字一起
答案 0 :(得分:1)
您不应为此使用模式。您只需将type="number"
传递给您的输入,即可进行所需的验证。
<FormInput
name="amount"
label="Amount"
type="number"
onChange={this.handleChange}
startAdornment={<InputAdornment position="start">$</InputAdornment>}
/>
答案 1 :(得分:0)
您的模式不适合十进制值。您可以使用以下模式来验证十进制数字:
^(\d*\.)?\d+$