代码之家  ›  专栏  ›  技术社区  ›  Giulia

如何验证ReactJS中的数值输入

  •  2
  • Giulia  · 技术社区  · 6 年前

    在Django中,可以很容易地使用MinValueValidator和MaxValueValidator来验证IntergerFields。
    他们的对手是什么?

    我在前端有一个表单(用ReactJS构建),其中多个字段是type=number字段,数字需要放在特定的值范围内,即大于0,小于250。

    在后端,我通过使用Min/Max ValueValidator实现了对数值输入的这种控制。在ReactJS前端我该怎么办?

    谢谢您!

    1 回复  |  直到 6 年前
        1
  •  3
  •   Tholle    6 年前

    你仍然可以使用 min max 的属性 input ,但有一些自定义逻辑来检查 输入 值不会超出该间隔。

    例子

    class App extends React.Component {
      state = { value: 0 };
    
      handleChange = event => {
        let { value, min, max } = event.target;
        value = Math.max(Number(min), Math.min(Number(max), Number(value)));
    
        this.setState({ value });
      };
    
      render() {
        return (
          <input
            value={this.state.value}
            onChange={this.handleChange}
            type="number"
            min="1"
            max="250"
          />
        );
      }
    }
    
    ReactDOM.render(<App />, document.getElementById("root"));
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
    
    <div id="root"></div>