如何在反应输入中仅允许数字和小数

时间:2020-03-11 09:11:28

标签: javascript reactjs validation input react-redux

我想在反应输入中只允许带小数的数字,并根据获得的值做一些条件,低于我尝试的值,但效果很好,但存在以下问题

<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之前添加'。'(十进制),所以请帮我什么我可以做的是允许带小数点的数字和其他数字一起

2 个答案:

答案 0 :(得分:1)

您不应为此使用模式。您只需将type="number"传递给您的输入,即可进行所需的验证。

<FormInput
   name="amount"
   label="Amount"
   type="number"
   onChange={this.handleChange}
   startAdornment={<InputAdornment position="start">$</InputAdornment>}
/>

答案 1 :(得分:0)

您的模式不适合十进制值。您可以使用以下模式来验证十进制数字:

^(\d*\.)?\d+$