类型为文本时,仅将输入框限制为数字

时间:2018-01-08 23:47:18

标签: html reactjs input

当类型为文本时,我需要将输入框仅限于数值。我看了看这个答案,但它似乎没有用。 HTML text input allows only numeric input

<input type="text" onKeyPress={(event) => {
    if (event.charCode >= 48 && event.charCode <= 57 || event.charCode >= 96 && event.charCode <= 105) {
        return true;
    } else {
        return false;
    }
  }}
  className="form-control"
  maxLength="5"
  ref="zip"
  placeholder="Enter Zip Code" />

3 个答案:

答案 0 :(得分:1)

您可以在HTML中使用输入标记的数字类型。 HTML支持标准数字输入类型。 公式是这样的。

input type =“number”placeholder =“输入邮政编码”

答案 1 :(得分:1)

由于您使用的是React,因此您可以将<input>作为受控组件,并决定何时更改状态:

class ZipCodeInput extends React.Component {
  state = {
    value: ""
  }

  render() {
    return (
      <input
        type="text"
        onChange={(event) => {
          if (isNaN(Number(event.target.value))) {
            return;
          } else {
            this.setState({ value: event.target.value });
          }
        }}
        maxLength="5"
        placeholder="Enter Zip Code"
        value={this.state.value}
      />
    );
  }
}

我修改了条件,试图使意图更加明显。

答案 2 :(得分:0)

我已经在https://codepen.io/anon/pen/gooyEy整理了另一种方法来实现这一目标。

代码如下:

<input
  type="text"
  autofocus
  onkeypress="return onlyNumbers(event)"/>
const onlyNumbers = (event) => {
  return !isNaN(event.key);
}

如果您正在寻找单行代码,也可以使用此功能:

<input
  type="text"
  onkeypress="return !isNaN(event.key)"/>