1. ホーム
  2. ジャバスクリプト

[解決済み】Enterキーを押した後にonChangeイベントを呼び出す方法

2022-03-30 17:52:13

質問

私はBootstrapの初心者ですが、この問題で困っています。入力フィールドがあるのですが、数字を1つだけ入力するとすぐに onChange が呼び出されますが、全体の数字が入力されたときに 'Enter' を押したときに呼び出されるようにしたいのです。バリデーション関数も同じで、早く呼び出されてしまいます。

var inputProcent = React.CreateElement(bootstrap.Input, {type: "text",
  //bsStyle: this.validationInputFactor(),
  placeholder: this.initialFactor,
  className: "input-block-level",
  onChange: this.handleInput,
  block: true,
  addonBefore: '%',
  ref:'input',
  hasFeedback: true
});

解決方法は?

によると Reactドキュメント のように、キーボードイベントをリスニングすることができます。 onKeyPress または onKeyUp ではなく onChange .

var Input = React.createClass({
  render: function () {
    return <input type="text" onKeyDown={this._handleKeyDown} />;
  },
  _handleKeyDown: function(e) {
    if (e.key === 'Enter') {
      console.log('do validate');
    }
  }
});

更新:React.Componentを使用する

以下は、同じことを行うReact.Componentを使用したコードです。

class Input extends React.Component {
  _handleKeyDown = (e) => {
    if (e.key === 'Enter') {
      console.log('do validate');
    }
  }

  render() {
    return <input type="text" onKeyDown={this._handleKeyDown} />
  }
}

以下は jsfiddle .

アップデート2:機能コンポーネントを使用する

const Input = () => {
  const handleKeyDown = (event) => {
    if (event.key === 'Enter') {
      console.log('do validate')
    }
  }

  return <input type="text" onKeyDown={handleKeyDown} />
}