仅允许onKeyPress或onKeyDown中的React中的数字

时间:2017-12-15 21:47:58

标签: javascript reactjs events onkeydown onkeypress

我需要用户只在输入字段中输入数字。 我尝试使用onKeyPress& onKeyDown事件。我无法从事件中获取布尔值。任何帮助都将不胜感激。

class User extends Component {
  constructor (props) {
    super(props)
    this.state = { value: ''}
    this.keyPress = this.keyPress.bind(this);
    this.handleChange = this.handleChange.bind(this);
  }
  handleChange(e) {
    this.setState({ value: e.target.value });
 }
  keyPress(e){
    if(e.keyCode == 13){
       console.log('value', e.target.value);
       }
    else{
      const charCode = (e.which) ? e.which : e.keyCode;
      if (charCode > 31 && (charCode < 48 || charCode > 57)){
        return false;
      }
      else{
         return true;
      }
    }
 }
<input
 type='text'
 value={this.state.value}
 onKeyDown={this.keyPress(event)}
 onChange={this.handleChange}
 />

2 个答案:

答案 0 :(得分:1)

您始终可以使用输入类型=&#34;数字&#34; 。它不允许任何字母。

如果您要使用面具,则可以尝试this

正如您在代码段中所看到的,您可以使用char:9限制数字的掩码,甚至可以指定位于空格之间的字符。

&#13;
&#13;
class App extends React.Component {
  render() {
    return <ReactInputMask mask="999 999 999" maskChar="_" />;
  }
}

ReactDOM.render(<App />, document.getElementById("root"));
&#13;
<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>
<!-- Will be exported to window.ReactInputMask -->
<script src="https://unpkg.com/react-input-mask/dist/react-input-mask.min.js"></script>

<div id="root"></div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

使用输入type="number"。它限制用户只写数字