1. ホーム
  2. javascript

[解決済み] Reactでエンターキーが押されたときにTextFieldの値を取得するには?

2023-02-07 14:46:04

質問

私は TextField の値を渡したい。キーボードの onChange() イベントで、私は textbox の値を取得していますが、この値を enter キーが押されたとき、この値を得るにはどうしたらよいでしょうか?

コードです。

import TextField from 'material-ui/TextField';

class CartridgeShell extends Component {

   constructor(props) {
      super(props);
      this.state = {value:''}
      this.handleChange = this.handleChange.bind(this);
   }

   handleChange(e) {
      this.setState({ value: e.target.value });
   }

   render(){
      return(
         <TextField 
             hintText="First Name" 
             floatingLabelText="First Name*"
             value={this.state.value} 
             onChange={this.handleChange} 
             fullWidth={true} />
      )
   }
}

どのように解決するのですか?

使用方法 onKeyDown イベントを使用し、その中でユーザが押したキーのキーコードをチェックします。キーコードは Enter のキーコードは13なので、そのコードを確認して、そこにロジックを記述します。

この例を確認してください。

class CartridgeShell extends React.Component {

   constructor(props) {
      super(props);
      this.state = {value:''}

      this.handleChange = this.handleChange.bind(this);
      this.keyPress = this.keyPress.bind(this);
   } 
 
   handleChange(e) {
      this.setState({ value: e.target.value });
   }

   keyPress(e){
      if(e.keyCode == 13){
         console.log('value', e.target.value);
         // put the login here
      }
   }

   render(){
      return(
         <input value={this.state.value} onKeyDown={this.keyPress} onChange={this.handleChange} fullWidth={true} />
      )
    }
}

ReactDOM.render(<CartridgeShell/>, document.getElementById('app'))
<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 = 'app' />

注意 を置き換えると input 要素をMaterial-Uiで置き換えます。 TextField を定義し、他のプロパティも定義します。