只有数字在 React 中输入数字

我正试图从输入中排除减号和加号,但却出了问题:

解决办法

我试着模仿您的代码,发现 React**上的 <input type='number' />存在问题。关于解决方法,请查看此示例并亲自尝试: https://codepen.io/zvona/pen/WjpKJX?editors=0010

您需要将其定义为只包含数字模式的普通输入(type='text'):

<input type="text" pattern="[0-9]*" onInput={this.handleChange.bind(this)} value={this.state.financialGoal}。/>

然后比较输入的有效性:

const financialGoal = (evt.target.validity.valid) ? evt.target.value : this.state.financialGoal;

这种方法最大的注意事项是在手机上使用时--> 键盘不是数字格式,而是正常的字母格式。

评论(3)

一行代码

<input value={this.state.financialGoal} onChange={event => this.setState({financialGoal: event.target.value.replace(/\D/,'')})}/>
评论(3)
  • 要停止键入,请使用 onKeyPress 而不是 onChange

  • onKeyPress 中使用 event.preventDefault() 意味着停止按压事件。

  • 由于 keyPress 处理程序在 onChange 之前触发,因此必须检查按下的键 (event.keyCode),而不是输入的当前值 (event.target.value)。

     onKeyPress(event) {
       const keyCode = event.keyCode || event.which;
       const keyValue = String.fromCharCode(keyCode);
       if (/\+|-/.test(keyValue))
         event.preventDefault();
     }

下面的演示 👇&#127995;

评论(3)